在本文中,我们将为您详细介绍如何在PHP中输出可以正确读取Excel的UTF-8CSV?的相关知识,并且为您解答关于php读取excel内容的疑问,此外,我们还会提供一些关于excel2007官方下载
在本文中,我们将为您详细介绍如何在PHP中输出可以正确读取Excel的UTF-8 CSV?的相关知识,并且为您解答关于php读取excel内容的疑问,此外,我们还会提供一些关于excel 2007官方下载 免费完整版 PHPExcel读取Excel文件的实现代码、php ExcelReader 读取Excel类_PHP教程、php – 无法正确读取csv(制表符分隔)、phpExcel 准确读取excel表格时间的有用信息。
本文目录一览:- 如何在PHP中输出可以正确读取Excel的UTF-8 CSV?(php读取excel内容)
- excel 2007官方下载 免费完整版 PHPExcel读取Excel文件的实现代码
- php ExcelReader 读取Excel类_PHP教程
- php – 无法正确读取csv(制表符分隔)
- phpExcel 准确读取excel表格时间
如何在PHP中输出可以正确读取Excel的UTF-8 CSV?(php读取excel内容)
我有一个非常简单的东西,它只能以CSV格式输出一些内容,但是必须是UTF-8。我在TextEdit或TextMate或Dreamweaver中打开此文件,它正确显示了UTF-8字符,但是,如果在Excel中打开它,则是在做这种愚蠢的事情。这是我文档开头的内容:
header("content-type:application/csv;charset=UTF-8");header("Content-Disposition:attachment;filename=\"CHS.csv\"");
除了Excel(Mac,2008)不想正确导入之外,这一切似乎都具有预期的效果。Excel中没有“以UTF-8格式打开”之类的选项,所以……我有点烦。
尽管很多人都遇到相同的问题,但我似乎在任何地方都找不到针对此问题的明确解决方案。我最常看到的是包含BOM,但我无法确切地知道如何做到这一点。正如您在上面看到的那样,我只是在echo
读取这些数据,没有写入任何文件。如果需要的话,我可以这样做,我只是没有,因为在这一点上似乎并不需要。有什么帮助吗?
更新:我尝试回显BOM表,因为echo pack("CCC", 0xef, 0xbb,0xbf);
它是从试图检测BOM的站点提取的。但是,Excel在导入时只是将这三个字符附加到第一个单元格,并且仍然弄乱了特殊字符。
答案1
小编典典引用Microsoft支持工程师的话
Excel for Mac当前不支持UTF-8
2017年更新 :适用于 Office 2016 之前的Mac的所有Microsoft Excel版本。较新版本(来自Office
365)现在支持UTF-8。
为了输出Windows和OS X上的Excel都能够成功读取的UTF-8内容,您需要做两件事:
确保将您的UTF-8 CSV文本转换为UTF-16LE
mb_convert_encoding($csv, ''UTF-16LE'', ''UTF-8'');
确保将UTF-16LE字节顺序标记添加到文件的开头
chr(255) . chr(254)
仅在OS X(而 不是
Windows)上的Excel上出现的下一个问题是在查看带有逗号分隔值的CSV文件时,Excel将仅用一行显示行,并且所有文本以及第一行的逗号都将呈现。
避免这种情况的方法是使用制表符作为分隔值。
我从PHP注释中使用了此功能(使用制表符“
\ t”而不是逗号),并且它在OS X和Windows Excel上都可以完美运行。
请注意,要解决将空列作为行尾的问题,我确实不得不更改了以下代码行:
$field_cnt = count($fields);
至
$field_cnt = count($fields)-1;
就像该页面上的其他一些评论所述,其他电子表格应用程序(如OpenOffice Calc,Apple自己的Numbers和Google
Doc的电子表格)对带有逗号的UTF-8文件没有问题。
excel 2007官方下载 免费完整版 PHPExcel读取Excel文件的实现代码
涉及知识点:
php对excel文件进行循环读取
php对字符进行ascii编码转化,将字符转为十进制数
php对excel日期格式读取,并进行显示转化
php对汉字乱码进行编码转化
复制代码 代码如下:
require_once ''PHPExcel.php'';
/**对excel里的日期进行格式转化*/
function GetData($val){
$jd = GregorianToJD(1, 1, 1970);
$gregorian = JDToGregorian($jd+intval($val)-25569);
return $gregorian;/**显示格式为 “月/日/年” */
}
$filePath = ''test.xlsx'';
$PHPExcel = new PHPExcel();
/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath)){
$PHPReader = new PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($filePath)){
echo ''no Excel'';
return ;
}
}
$PHPExcel = $PHPReader->load($filePath);
/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
/**从第二行开始输出,因为excel表中第一行为列名*/
for($currentRow = 2;$currentRow /**从第A列开始输出*/
for($currentColumn= ''A'';$currentColumn$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()将字符转为十进制数*/
if($currentColumn == ''A'')
{
echo GetData($val)."\t";
}else{
//echo $val;
/**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/
echo iconv(''utf-8'',''gb2312'', $val)."\t";
}
}
echo "";
}
echo "\n";
?>
以上就介绍了excel 2007官方下载 免费完整版 PHPExcel读取Excel文件的实现代码,包括了excel 2007官方下载 免费完整版方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
php ExcelReader 读取Excel类_PHP教程
php ExcelReader 读取Excel类 /* 这是一款开源的php代码,ExcelReader是专业地excel表进行读写操作的哦,下面我们来看一款ExcelReader读取bKjia.c0m.xls工作表实例吧。
php教程 excelreader 读取excel类
/*
这是一款开源的php代码,excelreader是专业地excel表进行读写操作的哦,下面我们来看一款excelreader读取bKjia.c0m.xls工作表实例吧。
*/
$allow_url_override = 1; // set to 0 to not allow changed via post or get if(!$allow_url_override || !isset($file_to_include)) { $file_to_include = "bKjia.c0m.xls"; } if(!$allow_url_override || !isset($max_rows)) { $max_rows = 0; //use 0 for no max } if(!$allow_url_override || !isset($max_cols)) { $max_cols = 5; //use 0 for no max } if(!$allow_url_override || !isset($debug)) { $debug = 0; //1 for on 0 for off } if(!$allow_url_override || !isset($force_nobr)) { $force_nobr = 1; //force the info in cells not to wrap unless stated explicitly (newline) } require_once ''www.bKjia.c0m/reader.php''; $data = new spreadsheet_excel_reader(); $data->setoutputencoding(''cpa25a''); $data->read($file_to_include); error_reporting(e_all ^ e_notice); echo " .table_data { border-style:ridge; border-width:1; } .tab_base { background:#c5d0dd; font-weight:bold; border-style:ridge; border-width:1; cursor:pointer; } .table_sub_heading { background:#cccccc; font-weight:bold; border-style:ridge; border-width:1; } .table_body { background:#f0f0f0; font-wieght:normal; font-size:12; font-family:sans-serif; border-style:ridge; border-width:1; border-spacing: 0px; border-collaps教程e: collapse; } .tab_loaded { background:#222222; color:white; font-weight:bold; border-style:groove; border-width:1; cursor:pointer; } "; function make_alpha_from_numbers($number) { $numeric = "abcdefghijklmnopqrstuvwxyz"; if($number=1 && $data->sheets[$sheet][''cellsinfo''][$row][$col][''rowspan''] >=1) { $this_cell_colspan = " colspan=" . $data->sheets[$sheet][''cellsinfo''][$row][$col][''colspan'']; $this_cell_rowspan = " rowspan=" . $data->sheets[$sheet][''cellsinfo''][$row][$col][''rowspan'']; for($i=1;$isheets[$sheet][''cellsinfo''][$row][$col][''colspan''];$i++) { $data->sheets[$sheet][''cellsinfo''][$row][$col+$i][''dontprint'']=1; } for($i=1;$isheets[$sheet][''cellsinfo''][$row][$col][''rowspan''];$i++) { for($j=0;$jsheets[$sheet][''cellsinfo''][$row][$col][''colspan''];$j++) { $data->sheets[$sheet][''cellsinfo''][$row+$i][$col+$j][''dontprint'']=1; } } } else if($data->sheets[$sheet][''cellsinfo''][$row][$col][''colspan''] >=1) { $this_cell_colspan = " colspan=" . $data->sheets[$sheet][''cellsinfo''][$row][$col][''colspan'']; $this_cell_rowspan = ""; for($i=1;$isheets[$sheet][''cellsinfo''][$row][$col][''colspan''];$i++) { $data->sheets[$sheet][''cellsinfo''][$row][$col+$i][''dontprint'']=1; } } else if($data->sheets[$sheet][''cellsinfo''][$row][$col][''rowspan''] >=1) { $this_cell_colspan = ""; $this_cell_rowspan = " rowspan=" . $data->sheets[$sheet][''cellsinfo''][$row][$col][''rowspan'']; for($i=1;$isheets[$sheet][''cellsinfo''][$row][$col][''rowspan''];$i++) { $data->sheets[$sheet][''cellsinfo''][$row+$i][$col][''dontprint'']=1; } } else { $this_cell_colspan = ""; $this_cell_rowspan = ""; } if(!($data->sheets[$sheet][''cellsinfo''][$row][$col][''dontprint''])) { $table_output[$sheet] .= " "; if($force_nobr) { $table_output[$sheet] .= ""; } $table_output[$sheet] .= nl2br(htmlentities($data->sheets[$sheet][''cells''][$row][$col])); if($force_nobr) { $table_output[$sheet] .= ""; } $table_output[$sheet] .= ""; } } $table_output[$sheet] .= ""; } $table_output[$sheet] .= ""; $table_output[$sheet] = str_replace("n","",$table_output[$sheet]); $table_output[$sheet] = str_replace("r","",$table_output[$sheet]); $table_output[$sheet] = str_replace("t"," ",$table_output[$sheet]); if($debug) { $debug_output = print_r($data->sheets[$sheet],true); $debug_output = str_replace("n","\n",$debug_output); $debug_output = str_replace("r","\r",$debug_output); $table_output[$sheet] .= "$debug_output"; } echo "sheet_html[$sheet] = "$table_output[$sheet]";n"; } echo " function change_tabs(sheet) { //alert(''sheet_tab_'' + sheet); for(i=0;i
// excelreader这个类你可以到官网去下载哦。
php – 无法正确读取csv(制表符分隔)
if(($handle = fopen("var/import/MMT29DEC.csv","r"))!==FALSE){ /*Skip the first row*/ fgetcsv($handle,1000,chr(9)); while(($data = fgetcsv($handle,chr(9)))!==FALSE){ print_r($data[0]); } }
当print_r显示它的数据时
Array ( [0] => 01SATAPC [1] => 40ATAPC [2] => [3] => 21P [4] => SERIAL ATA POWER CABLE [5] => 0.00 [6] => 2.00 [7] => 0 [8] => Power Supplies [9] => SERIAL ATA POWER CABLE [10] => 4 TO 15 PIN 160MM [11] => [12] => [13] => [14] => MELBHO [15] => 0.000 [16] => [17] => Order to Order [18] => 4 [19] => 2013-01-18 )
哪个是期望的结果,但是当我使用$data [‘index’]访问特定列值时,例如$data [8]或$data [1]它奇怪地给我垃圾值说对于一些迭代它给我正确的值但是在10-15行之后它的开始给我一些数字和其他列值…..我不要我知道这是什么,据我所知它应该是格式化问题我试过在excel中打开文件,它即将到来……
解决方法
if(($handle = fopen("var/import/MMT29DEC.csv",chr(9)))!==FALSE){ print_r($data[0]); } }
phpExcel 准确读取excel表格时间
phpExcel 正确读取excel表格时间
利用phpExcel读取excel文件,读取出来的时间列出现5位数字,并不是想要的时间(不知道为啥),在网上搜了一个excelTime的函数可以正确转化时间
品牌网站建设:http://www.ucantech.com/
Php代码
error_reporting(E_ALL);
date_default_timezone_set(''Asia/shanghai'');
/** PHPExcel_IOFactory */
require_once ''../Classes/PHPExcel/IOFactory.php'';
$inputFileName = ''6081076641077444758.xls'';
$objReader = new PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load($inputFileName);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$tempArray = array();
for($j=2;$j for($k=''A'';$k if($k==''M''||$k==''O'') //M列和O列是时间
$tempArray[] = excelTime($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue());
else
$tempArray[] = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
}
print_r($tempArray);
unset($tempArray);
}
function excelTime($date, $time = false) {
if(function_exists(''GregorianToJD'')){
if (is_numeric( $date )) {
$jd = GregorianToJD( 1, 1, 1970 );
$gregorian = JDToGregorian( $jd + intval ( $date ) - 25569 );
$date = explode( ''/'', $gregorian );
$date_str = str_pad( $date [2], 4, ''0'', STR_PAD_LEFT )
."-". str_pad( $date [0], 2, ''0'', STR_PAD_LEFT )
."-". str_pad( $date [1], 2, ''0'', STR_PAD_LEFT )
. ($time ? " 00:00:00" : '''');
return $date_str;
}
}else{
$date=$date>25568?$date+1:25569;
/*There was a bug if Converting date before 1-1-1970 (tstamp 0)*/
$ofs=(70 * 365 + 17+2) * 86400;
$date = date("Y-m-d",($date * 86400) - $ofs).($time ? " 00:00:00" : '''');
}
return $date;
} (fblww-0112)
关于如何在PHP中输出可以正确读取Excel的UTF-8 CSV?和php读取excel内容的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于excel 2007官方下载 免费完整版 PHPExcel读取Excel文件的实现代码、php ExcelReader 读取Excel类_PHP教程、php – 无法正确读取csv(制表符分隔)、phpExcel 准确读取excel表格时间等相关内容,可以在本站寻找。
本文标签: