0

PHPを使用してCSVファイルの空白行をプログラムで削除しようとしています。ファイルはサイトにアップロードされ、PHPExcel を使用して CSV に変換されます。特定のタイプの CSV が生成され、データ行の間に空白行が含まれています。PHP でそれらをクリーンアップしようとしていますが、うまくいきません。この CSV の例を次に示します: https://gist.github.com/vinmassaro/467ea98151e26a79d556

PHPExcel または標準の PHP 関数を使用して、CSV を読み込み、空白行を削除して保存する必要があります。前もって感謝します。

編集: これは、現在 PHPExcel で変換されている方法のスニペットです。これは、アップロードされたばかりのファイルに作用する Drupal フックの一部です。PHPExcelremoveRowメソッドは、空白行では機能しないように見え、空のデータ行のみで機能するように見えたので、機能させることができませんでした。

// Load the PHPExcel IOFactory.
require_once(drupal_realpath(drupal_get_path('module', 'custom')) . '/PHPExcel/Classes/PHPExcel/IOFactory.php');

// Load the uploaded file into PHPExcel for normalization.
$loaded_file = PHPExcel_IOFactory::load(drupal_realpath($original_file->uri));
$writer = PHPExcel_IOFactory::createWriter($loaded_file, 'CSV');
$writer->setDelimiter(",");
$writer->setEnclosure("");

// Get path to files directory and build a new filename and filepath.
$files_directory = drupal_realpath(variable_get('file_public_path', conf_path() . '/files'));
$new_filename = pathinfo($original_file->filename, PATHINFO_FILENAME) . '.csv';
$temp_filepath = $files_directory . '/' . $new_filename;

// Save the file with PHPExcel to the temp location. It will be deleted later.
$writer->save($temp_filepath);
4

3 に答える 3

1

str_replaceMihai Iorga のコメントの as を使用すると機能します。何かのようなもの:

$csv = file_get_contents('path/file.csv');
$no_blanks = str_replace("\r\n\r\n", "\r\n", $csv);
file_put_contents('path/file.csv', $no_blanks);

投稿した例からテキストをコピーしましたが、これは機能しましたが、空白のように見える各行に単一のスペースがあるため、「検索」パラメーターをに変更する必要がありまし"\r\n \r\n"た。"\r\n\r\n"

于 2013-10-21T15:08:40.877 に答える
0

これを試して:

<?php

$handle = fopen("test.csv", 'r'); //your csv file
$clean = fopen("clean.csv", 'a+'); //new file with no empty rows

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    if($num > 1)
    fputcsv($clean, $data ,";");
}
fclose($handle);
fclose($clean);

?>

私のローカルホストでテストしました。

出力データ:

初期ファイル:

col1,col2,col3,col4,col5,col6,col7,col8

0,229.500,7.4,3165.5,62,20.3922,15.1594,0

1,229.600,8.99608,3156.75,62,15.6863,16.882,0

2,229.700,7.2549,3130.25,62,16.8627,15.9633,0

3,229.800,7.1098,3181,62,17.2549,14.1258,0

Csv ファイルの消去:

col1    col2    col3    col4    col5    col6    col7    col8
0       229.500 7.4     3165.5    62    203.922 151.594 0
1       229.600 899.608 3156.75   62    156.863 16.882  0
2       229.700 72.549  3130.25   62    168.627 159.633 0
3       229.800 71.098  3181      62    172.549 141.258 0
于 2013-10-21T14:46:07.860 に答える