2

PHPでCSVダウンロード可能なファイルを生成しています。MSExcellまたはUbuntuLibreOfficeでファイルを開くと、ギ酸塩が期待どおりにならないという問題があります。

この出力が必要ですが、強制的に改行から開始することはできません。

Name           Slope   Length   Size(Inches)      Max Length         Location                                       
Name1            5      150       12"                500            location1   
Name2            8      350       12"                400            location 2  
Name3           16      326       12"                400            location3 

これは私のPHPコードです

        $csv_data[] = $_POST['name'][$i];
        $csv_data[] = $_POST['slope'][$i];
        $csv_data[] = $_POST['length'][$i];
        $csv_data[] = $size;
        $csv_data[] = $max_length;
        $csv_data[] = $_POST['location'][$i].PHP_EOLE;


    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=file.csv');

    $output = fopen('php://output', 'w');
    fputcsv($output, array("Name", "Slope", "Length", "Size", "Max Length", "Location"));
    fputcsv($output, $csv_data);

しかし、このコードは次のように出力されます。

Name    Slope   Length  Size    Max Slope Length    Location                                                
Name1   5   150 12" 500 location1   Name2   8   350 12" 400 location 2  Name3   16  326 12" 400 location3
4

3 に答える 3

1

以下をせよ:

$csv_headers = array(array("Name", "Slope", "Length", "Size", "Max Length", "Location"));
$csv_full_data = array_merge($csv_headers, $csv_data);
var_dump($csv_full_data);
fputcsv($output, $csv_full_data);

そして、出力を教えてください。

于 2013-01-11T08:27:02.283 に答える
1

私がやったことは、$csv_data配列を1次元ではなく2次元にしてから、foreachループを使用することです。それは少し遅いですが、私のために働いています。

これが更新されたコードです

    $csv_data[$i][] = $_POST['name'][$i];
    $csv_data[$i][] = $_POST['slope'][$i];
    $csv_data[$i][] = $_POST['length'][$i];
    $csv_data[$i][] = $size;
    $csv_data[$i][] = $max_length;
    $csv_data[$i][] = $_POST['location'][$i];

    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=file.csv');

    $output = fopen('php://output', 'w');
    fputcsv($output, array("Name", "Slope", "Length", "Size", "Max Length", "Location"));
    foreach ($csv_data as $value) {
        fputcsv($output, $value);
    }

これは私が必要としていた出力です。

Name    Slope   Length  Size    Max Length  Location
Name1    5       150    12"        500      location1 
Name2    8       350    12"        400      location12
Name3    16      326    12"        400      location3 
Name4    36      127    12"        400      location4 
于 2013-01-11T12:17:03.153 に答える
0

PHP_EOLの値は何ですか?「\ r\n」にして試してください

$csv_data[] = $_POST['location'][$i].PHP_EOL; change to 
$csv_data[] = $_POST['location'][$i]."\r\n";
于 2013-01-11T07:48:56.733 に答える