Как скачать файл CSV из продукта woocommerce, отображаемого табличным скриптом php? - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь загрузить товар в виде файла .csv. Файл будет загружаться автоматически после включения открывающей страницы с помощью приведенного ниже сценария php.

<?php

$args = array(
    'status' => 'publish',
    'limit' => 100,
    'orderby' => 'title',
    'order'   => 'ASC'
);
$products = wc_get_products( $args );
$counter = 1;

echo "<input type='submit' value='Export' name='Export'>";
if (count($products)) {
    echo  "<table align='center'><tr>";
    echo "<td>";
    // Open the table
    echo "<table style ='background-color:#ffffff;border-collapse: collapse; margin-right:10px'><thead><tr>
            <th width='50' style='border:1px solid black'>Sl No.</th>
            <th width='400' style='border:1px solid black'>Product Name</th>
            <th style='border:1px solid black' width='54'>Stock</th>
            </tr></thead>";
    // Cycle through the array
    foreach ($products as $product) {
        // Output a row
        if($product->stock_status == 'instock'){
        echo "<tr>";
        echo "<td align='center' style='border:1px solid black'>$counter</td>";
        echo "<td style='border:1px solid black'>$product->name</td>";
        echo "<td align='center' style='border:1px solid black'>$product->stock_quantity</td>";
        echo "</tr>";
        $counter++;
        $user_arr[] = array($counter,$product->name,$product->stock_quantity);
    }
    }
    // Close the table
    echo "</table>";
    echo "</td>";
    //-----------------------out of stock------------
    echo "<td valign='top'>";
    // Open the table
    echo "<table style = 'background-color:#ffffff;border-collapse: collapse;'><thead><tr>
            <th width='50' style='border:1px solid black'>Sl No.</th>
            <th width='400' style='border:1px solid black'>Out of stock products</th>
            <th style='border:1px solid black' width='54'>Stock</th>
            </tr></thead>"; 
    // Close the table
    echo "</table>";
    echo "</td>";
    echo "</tr></table>";
}

$serialize_user_arr = serialize($user_arr);
$filename = 'product_stock.csv';
$export_data = unserialize($serialize_user_arr);

// file creation
$file = fopen($filename,"w");

foreach ($export_data as $line){
 fputcsv($file,$line);
}

fclose($file);

// download
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=".$filename);
header("Content-Type: application/csv; "); 

readfile($filename);

// deleting file
unlink($filename);
exit();

После открытия загруженного файла «product_stock.csv» он не будет правильно выровнен с ожидаемым значением строк, но отобразит сценарий html на каждом ряду и тисках. Как скачать файл product_stock.csv после нажатия кнопки «Экспорт» и добавить ожидаемое значение в строках?

1 Ответ

0 голосов
/ 30 апреля 2020

Я получил решение. Добавлена ​​форма с кнопкой.

<form style="margin-left: 79%;margin-top: -59px;" method="post" id="export-form" action="">
        <?php submit_button('Export Stock Report', 'primary', 'download_csv' ); ?>
    </form>

Затем добавлен заголовок для правильного выравнивания, что позволяет избежать тегов html в product_stock.csv

header('Content-Type: text/csv; charset=utf-8'); //For .csv
header('Content-Disposition: attachment; filename=product-stock-report-' . date('d-m-Y') . '.csv');
$output = fopen('php://output', 'w');
$headings = array( 'Sl. No.','Product Name', 'Stock' );
fputcsv($output, $headings );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...