为了减轻后期开发的麻烦,写了这个类,用以简化输出配置,自动合并表头样式
创新互联公司专注于企业全网整合营销推广、网站重做改版、云岩网站定制设计、自适应品牌网站建设、H5建站、商城建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为云岩等各大城市提供网站开发制作服务。
PHP_XLSXWriter :
先看例子(test.php):
辅助类 Helper.php:
如果小的话,可以直接导入excel文件,如果大的话,请先存成csv文件,然后通过mysql
的load
data导入数据库
$_POST['file']取得的地址为服务器临时保存文件的地址,并不是当前php程序的目录,因此会发生找不到文件的问题,另外如果存到了没有访问权限的目录下,会出现不能读。
?php
error_reporting(E_ALL); //开启错误
set_time_limit(0); //脚本不超时
date_default_timezone_set('Europe/London'); //设置时间
/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . '/');//设置环境变量
/** PHPExcel_IOFactory */
include 'PHPExcel/IOFactory.php';
//$inputFileType = 'Excel5'; //这个是读 xls的
$inputFileType = 'Excel2007';//这个是计xlsx的
//$inputFileName = './sampleData/example2.xls';
$inputFileName = './sampleData/book.xlsx';
echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory with a defined reader type of ',$inputFileType,'br /';
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader-load($inputFileName);
/*
$sheet = $objPHPExcel-getSheet(0);
$highestRow = $sheet-getHighestRow(); //取得总行数
$highestColumn = $sheet-getHighestColumn(); //取得总列
*/
$objWorksheet = $objPHPExcel-getActiveSheet();//取得总行数
$highestRow = $objWorksheet-getHighestRow();//取得总列数
echo 'highestRow='.$highestRow;
echo "br";
$highestColumn = $objWorksheet-getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数
echo 'highestColumnIndex='.$highestColumnIndex;
echo "br /";
$headtitle=array();
for ($row = 1;$row = $highestRow;$row++)
{
$strs=array();
//注意highestColumnIndex的列数索引从0开始
for ($col = 0;$col $highestColumnIndex;$col++)
{
$strs[$col] =$objWorksheet-getCellByColumnAndRow($col, $row)-getValue();
}
$info = array(
'word1'="$strs[0]",
'word2'="$strs[1]",
'word3'="$strs[2]",
'word4'="$strs[3]",
);
//在这儿,你可以连接,你的数据库,写入数据库了
print_r($info);
echo 'br /';
}
?
1、首先我们准备一个含有数据的Excel表格,表头和数据表中的表字段相对应。
2、在ThinkPHP中引入PHPExcel类库。
3、然后我们编写导入的PHP代码。
4、然后我们编写导出的PHP代码。
5、然后我们进行导出测试发现可以导出即可。
thinkPHP实现将excel导入到数据库中的方法体如下:
PHPExcel插件可点击此处本站下载。
这里使用的是thinkphp框架的3.1版本,下载好压缩包,框架中的extend中的vendor文件夹中新建一个名为PHPExcel的文件夹,把classes里面的内容放到里面
下面是前端页面
提示:我在测试的时候遇到报错exception 'PHPExcel_Reader_Exception' with message 'The filename
原因是由于excel的文件后缀可能不同,我的文件后缀是xlsx,然后给把他另存为了xls的文件,就可以了
html
head
/head
body
form action="{pigcms::U('Jdb/abcdefgwulisuibian')}" method="post" enctype="multipart/form-data"
input type="file" name="import"/
input type="hidden" name="table" value="tablename"/
input type="submit" value="导入"/
/form
/body
/html
下面是php的
function abcdefgwulisuibianuplod(){
$this-display();//显示页面
}
function abcdefgwulisuibian(){
if (!empty($_FILES)) {
import("@.ORG.UploadFile");
$config=array(
'allowExts'=array('xlsx','xls'),
'savePath'='./Public/upload/',
'saveRule'='time',
);
$upload = new UploadFile($config);
if (!$upload-upload()) {
$this-error($upload-getErrorMsg());
} else {
$info = $upload-getUploadFileInfo();
}
vendor("PHPExcel.PHPExcel");
$file_name=$info[0]['savepath'].$info[0]['savename'];
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader-load($file_name,$encode='utf-8');
$sheet = $objPHPExcel-getSheet(0);
$highestRow = $sheet-getHighestRow(); // 取得总行数
$highestColumn = $sheet-getHighestColumn(); // 取得总列数
for($i=2;$i=$highestRow;$i++)//这个地方根据需要,一般第一行是名称,所以从第二行开始循环,也可以从第一行开始
{
$data['lianjieid'] = $objPHPExcel-getActiveSheet()-getCell("A".$i)-getValue();//数据库字段和excel列相对应
$data['yaoqingma'] = $objPHPExcel-getActiveSheet()-getCell("B".$i)-getValue();
$data['dlmima']= $objPHPExcel-getActiveSheet()-getCell("C".$i)-getValue();
$data['ljdizhi']= $objPHPExcel-getActiveSheet()-getCell("D".$i)-getValue();
M('jdb')-add($data);//插入数据库
}
$this-success('导入成功!');
}else
{
$this-error("请选择上传的文件");
}
}