1、用phpexcel读取excel的数据,显示在网页的同时存入数据库;
读取数据,添加MYSQL:
include('conn.php'); require_once 'PHPExcel.php'; require_once 'PHPExcel/IOFactory.php'; $reader = PHPExcel_IOFactory::createReader('Excel5'); //$reader = PHPExcel_IOFactory::createReader('Excel2007'); // 查\Classes\PHPExcel\Reader //$resource = 'upload/201405-cda.xlsx'; $resource = 'upload/201405-cda.xls'; if (!file_exists($resource)) { exit("$resource is not exists.\n"); } $PHPExcel = $reader->load($resource); // 文件名称 $sheet = $PHPExcel->getSheet(0); // 读取第一个工作表从0读起 $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumn = $sheet->getHighestColumn(); // 取得总列数,不过是最大列的字母 $highestColumn = PHPExcel_Cell::columnIndexFromString($highestColumn); // 转换字母为对应的统计数字; // getCellByColumnAndRow(0,1),第一列为0,第一行为1; echo $highestRow . "、" . $highestColumn . "、" . $sheet->getCellByColumnAndRow(0, 1)->getCalculatedValue() . "(数量统计结束,换行)<br />"; // 每次读取一行,再在行中循环每列的数值 $excelArray = array(); for ($row = 1; $row <= $highestRow; $row++) { $val = $sheet->getCellByColumnAndRow(0, $row)->getCalculatedValue(); if ($val == "") return; for ($column = 0; $column < $highestColumn; $column++) { $isDate = 0; $isDate = PHPExcel_Shared_Date::isDateTime($sheet->getCellByColumnAndRow($column, $row)); if ($isDate > 0) { $val = PHPExcel_Shared_Date::ExcelToPHPObject($sheet->getCellByColumnAndRow($column, $row)->getCalculatedValue())->format('Y/m/d'); }else { $val = $sheet->getCellByColumnAndRow($column, $row)->getCalculatedValue(); } $excelArray[$row][] = $val; echo "<strong>" . $column . ")" . $val . "</strong>"; echo "<br />"; } echo "<br />已读完第<strong>" . $row . "</strong>行数据:" . $excelArray[$row][3] . "<hr>"; //在这儿使用SQL语句,取$excelArray[$row][3]、$excelArray[$row][4]、$excelArray[$row][5]存入数据库对应字段 $tmpDepartment = $excelArray[$row][1]; $tmpName = $excelArray[$row][2]; $sql="insert into mywage (fdepartment,fname) values ('$tmpDepartment','$tmpName')"; //mysql_query("set names 'UTF-8'"); if (@mysql_query($sql)) { echo "添加数据记录:" . $excelArray[$row][2] . "成功"; }else { echo "tmpName - > ". $tmpName; echo "失败"; } }
问题是:在MYSQL后台管理查看到的中文数据全是乱码,我自己的php文件是UTF-8编码,MYSQL数据库表、字段的整理是:utf8_unicode_ci,这个该怎么解决,才能在PHPMYADMIN后台看见正常显示的中文数据?
主要是心里不踏实,因为内容能正常查询和条件判断,但是毕竟布署在生产环境 ,担心出问题。
统一三码:
1、php文件使用UTF-8编码。
2、header("Content-Type:text/html;charset=utf-8");
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3、mysql字符集使用utf8,程序增删查改前都需要set names 'UTF-8',建议写在db类的构造函数里面。
针对LZ从EXCEL导入的出现乱码问题,还需要加一条:
含有中文字符的单元格的值需要转换编码,$s = iconv('GBK', 'UTF-8', $s);
iconv比mb_convert_encoding效率高,一般情况下用前者就够了。
以上回答为借鉴部分
以上回答为借鉴部分,借鉴来源:http://q.cnblogs.com/q/62227/
答案作者:斯诺登。