use*_*781 6 php csv excel xls export-to-csv
我使用解析器将xls转换为csv http://code.google.com/p/php-excel-reader/
<?php
set_time_limit(300);
require_once 'excel_reader2.php';
$data = new Spreadsheet_Excel_Reader("file.xls", false, 'UTF-8');
$f = fopen('file.csv', 'w');
for($row = 1; $row <= $data->rowcount(); $row++)
{
$out = '';
for($col = 1; $col <= $data->colcount(); $col++)
{
$val = $data->val($row,$col);
// escape " and \ characters inside the cell
$escaped = preg_replace(array('#”#u', '#\\\\#u', '#[”"]#u'), array('"', '\\\\\\\\', '\"'), $val);
if(empty($val))
$out .= ',';
else
$out .= '"' . $escaped . '",';
}
// remove last comma (,)
fwrite($f, substr($out, 0, -1));
fwrite($f, "\n");
}
fclose($f);
?>
Run Code Online (Sandbox Code Playgroud)
从某些奇怪的原因,它跳过带有特殊符号的单元格 - 如°或®.怎么修好?
utf8_decode对我有用html_entity_decode:
<?php \nset_time_limit(300);\nrequire_once \'excel_reader2.php\'; \n$data = new Spreadsheet_Excel_Reader("file.xls", false, \'UTF-8\'); \n\n$f = fopen(\'file.csv\', \'w\'); \nfor($row = 1; $row <= $data->rowcount(); $row++) \n{ \n $out = \'\'; \n for($col = 1; $col <= $data->colcount(); $col++) \n { \n $val = $data->val($row,$col);\n\n // escape " and \\ characters inside the cell \n $escaped = preg_replace(array(\'#\xe2\x80\x9d#u\', \'#\\\\\\\\#u\', \'#[\xe2\x80\x9d"]#u\'), array(\'"\', \'\\\\\\\\\\\\\\\\\', \'\\"\'), $val); \n $escaped = utf8_decode($escaped);\n //$escaped = html_entity_decode($escaped);\n if(empty($val)) \n $out .= \',\'; \n else \n $out .= \'"\' . $escaped . \'",\'; \n }\n // remove last comma (,) \n fwrite($f, substr($out, 0, -1)); \n fwrite($f, "\\n");\n}\nfclose($f);\n\n?>\nRun Code Online (Sandbox Code Playgroud)\n\n输出:
\n\n"1","2","3","4","5"\n"a","b","c","d","e"\n"6","7","\xc2\xb0","9","10"\n"q","w","e","r","t"\n"\xc2\xae","12","13","14","15"\n"z","x","c","v","b"\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1838 次 |
| 最近记录: |