2015-11-23 9 views
3

У меня проблема с преобразованием xlsx-файла в csv - это рекламные места после каждого символа.PHP - добавление пробелов в XLSX в CSV

XLSX файл: enter image description here

CSV файл результатов: enter image description here

КОД:

if (file_exists('temp.xlsx')) {      

require_once('Classes\PHPExcel.php'); 
$TypeFile="Excel2007"; 
$FilePath= "temp.xlsx"; 
$objReader = PHPExcel_IOFactory::createReader($TypeFile); 
$objReader->setReadDataOnly(true); 
$objExcel = $objReader->load($FilePath); 
$objCSV = PHPExcel_IOFactory::createWriter($objExcel, 'CSV'); 
$objCSV->setPreCalculateFormulas(false); 
$objCSV->setDelimiter(','); 
$objCSV->setEnclosure('"');  
$objCSV->save('prf.csv'); 
} 

Как предотвратить все эти случайные пробелы появляться?

EDIT inline

Все в одной строке

EDIT 2

enter image description here

+1

Действительно ли это файл xlsx OfficeOpenXML? Этого я никогда не встречал раньше, чем за 10 лет работы с PHPExcel. Похоже, что-то где-то не использует правильную кодировку. –

+0

temp.xlsx является результатом другого файла CSV, который преобразуется с помощью phpexcel – JustinasT

+0

Что значит «результат другого CSV-файла»? Вы имеете в виду, что это CSV-файл с расширением .xlsx? Как он создается? –

ответ

1
$fi = fopen('myFile.csv', 'r'); 
$fo = fopen('myFilenew.csv', 'w'); 
while (($data = fgetcsv($fi, 0, "\t")) !== false) { 
array_walk($data, function(&$value) {$value = preg_replace('/[^\P{C}\n]+/u', '', $value);}); 
fputcsv($fo, $data); 
} 
fclose($fi); 
fclose($fo); 

Это решило мою проблему. Спасибо Mark Baker

Смежные вопросы