使用PHPExcel 对表格进行,读取和写入的操作。。。。
下面的代码是使用PHPExcel 对多个表格数据进行读取, 然后整合的写入新的表格的方法!!!代码有点粗糙 , 多多保函!!!
这里有些地方注意下,如果你的表格数据过大, 一定要记得修改php.ini里面的相关配置:
file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize = 8m ;望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size = 8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。
进一步配置以下的参数
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit = 8m ;每个PHP页面所吃掉的最大内存,默认8M
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
max_execution_time = 600
max_input_time = 600
memory_limit = 32m
file_uploads = on
upload_tmp_dir = /tmp
upload_max_filesize = 32m
post_max_size = 32m
<?php include_once '../PHPExcel/PHPExcel/IOFactory.php';
include_once '../PHPExcel/PHPExcel.php'; function getOrderInfo($order_file,$number)
{
try {
$order_file = iconv( 'UTF-8', 'GBK', $order_file);
$inputFileType = PHPExcel_IOFactory::identify($order_file);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($order_file);
} catch(Exception $e) {
die('加载文件发生错误:'.pathinfo($order_file,PATHINFO_BASENAME).':'.$e->getMessage());
} // 确定要读取的sheet,什么是sheet,看excel的右下角,真的不懂去百度吧
$sheet = $objPHPExcel->getSheet($number);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn(); $data = [];
// 获取一行的数据
for ($row = 2; $row <= $highestRow; $row++) {
$data[] = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
} return $data;
}
function merge_excel()
{
$order_data = getOrderInfo('./orderDetailList.xls',0);
$goods_data = getOrderInfo('./orderList.xls',0);
$goods_info = getOrderInfo('./order.xlsx',1);
$count = count($goods_data);
$goods_count = count($goods_info);
$array = []; foreach ($order_data as $key => $value)
{
$m = 0;
for ($i = 0; $i < $count; $i++)
{
if($value[0][0] == $goods_data[$i][0][0])
{
$m += 1;
if($value[0][25] != '')
{
$total = $goods_data[$i][0][3];
if($m == 1)
{
$arr = [
0 => $value[0][14],
1 => ltrim($value[0][18],"'"),
2 => $value[0][15],
3 => '',
4 => $total,
5 => $value[0][25].'/TB订单: '.$value[0][0].'/'.$value[0][28],
6 => '',
7 => '',
8 => $value[0][8],
9 => $value[0][6]
];
}else{
$arr = [
0 => '',
1 => '',
2 => '',
3 => '',
4 => $total,
5 => '',
6 => '',
7 => '',
8 => '',
9 => ''
];
}
if($goods_data[$i][0][9] != 'null')
{
$sku = explode(';',$goods_data[$i][0][9]);
foreach ($sku as $k => $item)
{
$code_arr_1 = explode('*',$item);
$number = $code_arr_1[1];
if($number)
{
$total = $number * $goods_data[$i][0][3];
}
$goods_code = '';
if($k == 0)
{
$code = substr($code_arr_1[0],strpos($code_arr_1[0], 'D') + 1);
for ($j = 0; $j < $goods_count; $j++)
{
if($code == $goods_info[$j][0][2])
{
$goods_code = $goods_info[$j][0][1];
}
}
$arr[3] = $goods_code;
$arr[4] = $total;
$array[] = $arr;
}else{
for ($j = 0; $j < $goods_count; $j++)
{
if($code_arr_1[0] == $goods_info[$j][0][2])
{
$goods_code = $goods_info[$j][0][1];
}
}
$array[] = [
0 => '',
1 => '',
2 => '',
3 => $goods_code,
4 => $total,
5 => '',
6 => '',
7 => '',
8 => '',
9 => ''
];
}
}
}else{
$array[] = $arr;
}
} }
}
}
$PHPExcel = new \PHPExcel();
$PHPExcel->getProperties()->setCreator("lzp")->setTitle("xxxxxxxx有限公司")->setKeywords("订单数据");
$PHPExcel->setActiveSheetIndex(0)->setTitle("订单列表");
$PHPExcel->getActiveSheet()->setCellValueExplicit('A1', "收件人姓名", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('A')->setWidth(50);
$PHPExcel->getActiveSheet()->setCellValueExplicit('B1', "收件人电话", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('B')->setWidth(20);
$PHPExcel->getActiveSheet()->setCellValueExplicit('C1', "收件人地址", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('C')->setWidth(20);
$PHPExcel->getActiveSheet()->setCellValueExplicit('D1', "商品条码", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('D')->setWidth(20);
$PHPExcel->getActiveSheet()->setCellValueExplicit('E1', "商品数量", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('E')->setWidth(20);
$PHPExcel->getActiveSheet()->setCellValueExplicit('F1', "订单备注", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('F')->setWidth(20);
$PHPExcel->getActiveSheet()->setCellValueExplicit('G1', "身份证号码", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('G')->setWidth(20);
$PHPExcel->getActiveSheet()->setCellValueExplicit('H1', "省市区代码(不填)", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('H')->setWidth(20);
$PHPExcel->getActiveSheet()->setCellValueExplicit('I1', "商品金额(业务员必填)", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('I')->setWidth(20);
$PHPExcel->getActiveSheet()->setCellValueExplicit('J1', "运费金额(业务员必填)", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('J')->setWidth(20);
foreach ($array as $k => $val)
{
$num = $k + 2;
$PHPExcel->getActiveSheet()->setCellValueExplicit("A{$num}", "{$val[0]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("B{$num}", "{$val[1]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("C{$num}", "{$val[2]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("D{$num}", "{$val[3]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("E{$num}", "{$val[4]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("F{$num}", "{$val[5]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("G{$num}", "{$val[6]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("H{$num}", "{$val[7]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("I{$num}", "{$val[8]}", \PHPExcel_Cell_DataType::TYPE_STRING);
$PHPExcel->getActiveSheet()->setCellValueExplicit("J{$num}", "{$val[9]}", \PHPExcel_Cell_DataType::TYPE_STRING);
}
$objWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007');
$objWriter->save(time().'.xlsx');
}
merge_excel();
使用PHPExcel 对表格进行,读取和写入的操作。。。。的更多相关文章
- JAVA读取、写入Excel表格(含03版)
引言 工作中可能会遇到对Excel读取和写入,如果我们自己手动写的话,会很麻烦,但是Apache中有poi工具类.poi工具类封装好了对于Excel读取和写入,我们需要用的时候,直接调用该方法就好了. ...
- C#中创建、打开、读取、写入、保存Excel的一般性代码
---转载:http://hi.baidu.com/zhaocbo/item/e840bcf941932d15fe358228 1. Excel对象微软的Excel对象模型包括了128个不同的对象,从 ...
- python3读取、写入、追加写入excel文件
由于excel版本不同,python处理的时候选择的库页不同. 一.操作对应版本表格需要用到的库 1.操作xls格式的表格文件,需要用到的库如下: 读取:xlrd 写入:xlwt 修改(追加写入):x ...
- ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)
当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...
- asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法
来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...
- SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable
MS SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表可以在不同服务器上). SqlBulkCopy 类允许编写提供类似功能的托管代码解决方 ...
- SQLServer2012在登录远程服务器实例时报错:尝试读取或写入受保护的内存
SQLServer2012在登录远程服务器实例时报错:尝试读取或写入受保护的内存.这通常指示其它内存已损坏.(System.Data). 而登录本地数据库实例则能顺利登入,不存在上述问题. 试一试重置 ...
- 如何通过SerialPort读取和写入设备COM端口数据
SerialPort类用于控制串行端口文件资源.提供同步 I/O 和事件驱动的 I/O.对管脚和中断状态的访问以及对串行驱动程序属性的访问.另外,SerialPort的功能可以包装在内部 Stream ...
- properties配置文件的读取和写入
/** * 类名:PropertiesUtil * 功能:提供对properties配置文件的读取和写入 * @author ChengTao */package com.xy.xyd.rest.bi ...
随机推荐
- dubbo学习总结二 服务端
服务端主要执行对底层数据库的操作 主要分层为 api +dao+ filter+ util+... 首先 dubbo 服务端有一个dubbo配置文件 dubbo:application 定义应用名称 ...
- 又续CSS3
这次主要讲呢 1.box-sizing属性 语法:box-sizing: content-box|border-box|inherit; box-sizing属性的用法 box-sizing属性可以为 ...
- excel操作方法
excel分列: http://jingyan.baidu.com/article/54b6b9c0d53f622d593b4772.html excel分列: http://jingyan.baid ...
- 【深入理解JAVA虚拟机】第二部分.内存自动管理机制.4.JVM工具
1.概述 工具作用:性能监控与故障处理 工作原理:分析数据 数据包含:运行日志. 异常堆栈. GC日志. 线程快照(threaddump/javacore文件). 堆转储快照(heapdump/hpr ...
- 「C语言」数据类型及混合运算与类型转换
深入学习C语言时,有必要先了解一下数据类型的概念,以及它们之间的混合运算与类型转换. 本篇文章便是根据<C语言程序设计教程>和在线翻阅资料后整理而出.(练习题将逐步更新) 目录: ...
- css 17课--
---------------------------------------------------------------------------------------------------- ...
- 在UML系统开发中有三个主要的模型
http://www.cnblogs.com/Yogurshine/archive/2013/01/14/2859248.html 在UML系统开发中有三个主要的模型: 功能模型: 从用户的角度展示系 ...
- Yii 验证和消息
setFlash(), getFlash()可以完成验证成功后提示 <?php # 成功信息提示 Yii::app()->user->setFlash('success', &quo ...
- jQuery 实现改变图片指定区域的颜色
javascript本身无法改变图片的颜色,不过我们可以通过一些技巧来实现一样的效果. 1.首先我们要知道图片哪些区域需要改变颜色,这里我们可以用执点地图的方法来弄 例1: <img src=& ...
- POJ 3216 Prime Path(打表+bfs)
Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 27132 Accepted: 14861 Desc ...