下面的代码是使用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
1 <?php
2
3 include_once '../PHPExcel/PHPExcel/IOFactory.php';
4 include_once '../PHPExcel/PHPExcel.php';
5
6 function getOrderInfo($order_file,$number)
7 {
8 try {
9 $order_file = iconv( 'UTF-8', 'GBK', $order_file);
10 $inputFileType = PHPExcel_IOFactory::identify($order_file);
11 $objReader = PHPExcel_IOFactory::createReader($inputFileType);
12 $objPHPExcel = $objReader->load($order_file);
13 } catch(Exception $e) {
14 die('加载文件发生错误:'.pathinfo($order_file,PATHINFO_BASENAME).':'.$e->getMessage());
15 }
16
17 // 确定要读取的sheet,什么是sheet,看excel的右下角,真的不懂去百度吧
18 $sheet = $objPHPExcel->getSheet($number);
19 $highestRow = $sheet->getHighestRow();
20 $highestColumn = $sheet->getHighestColumn();
21
22 $data = [];
23 // 获取一行的数据
24 for ($row = 2; $row <= $highestRow; $row++) {
25 $data[] = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
26 }
27
28 return $data;
29 }
30 function merge_excel()
31 {
32 $order_data = getOrderInfo('./orderDetailList.xls',0);
33 $goods_data = getOrderInfo('./orderList.xls',0);
34 $goods_info = getOrderInfo('./order.xlsx',1);
35 $count = count($goods_data);
36 $goods_count = count($goods_info);
37 $array = [];
38
39 foreach ($order_data as $key => $value)
40 {
41 $m = 0;
42 for ($i = 0; $i < $count; $i++)
43 {
44 if($value[0][0] == $goods_data[$i][0][0])
45 {
46 $m += 1;
47 if($value[0][25] != '')
48 {
49 $total = $goods_data[$i][0][3];
50 if($m == 1)
51 {
52 $arr = [
53 0 => $value[0][14],
54 1 => ltrim($value[0][18],"'"),
55 2 => $value[0][15],
56 3 => '',
57 4 => $total,
58 5 => $value[0][25].'/TB订单: '.$value[0][0].'/'.$value[0][28],
59 6 => '',
60 7 => '',
61 8 => $value[0][8],
62 9 => $value[0][6]
63 ];
64 }else{
65 $arr = [
66 0 => '',
67 1 => '',
68 2 => '',
69 3 => '',
70 4 => $total,
71 5 => '',
72 6 => '',
73 7 => '',
74 8 => '',
75 9 => ''
76 ];
77 }
78 if($goods_data[$i][0][9] != 'null')
79 {
80 $sku = explode(';',$goods_data[$i][0][9]);
81 foreach ($sku as $k => $item)
82 {
83 $code_arr_1 = explode('*',$item);
84 $number = $code_arr_1[1];
85 if($number)
86 {
87 $total = $number * $goods_data[$i][0][3];
88 }
89 $goods_code = '';
90 if($k == 0)
91 {
92 $code = substr($code_arr_1[0],strpos($code_arr_1[0], 'D') + 1);
93 for ($j = 0; $j < $goods_count; $j++)
94 {
95 if($code == $goods_info[$j][0][2])
96 {
97 $goods_code = $goods_info[$j][0][1];
98 }
99 }
100 $arr[3] = $goods_code;
101 $arr[4] = $total;
102 $array[] = $arr;
103 }else{
104 for ($j = 0; $j < $goods_count; $j++)
105 {
106 if($code_arr_1[0] == $goods_info[$j][0][2])
107 {
108 $goods_code = $goods_info[$j][0][1];
109 }
110 }
111 $array[] = [
112 0 => '',
113 1 => '',
114 2 => '',
115 3 => $goods_code,
116 4 => $total,
117 5 => '',
118 6 => '',
119 7 => '',
120 8 => '',
121 9 => ''
122 ];
123 }
124 }
125 }else{
126 $array[] = $arr;
127 }
128 }
129
130 }
131 }
132 }
133 $PHPExcel = new \PHPExcel();
134 $PHPExcel->getProperties()->setCreator("lzp")->setTitle("xxxxxxxx有限公司")->setKeywords("订单数据");
135 $PHPExcel->setActiveSheetIndex(0)->setTitle("订单列表");
136 $PHPExcel->getActiveSheet()->setCellValueExplicit('A1', "收件人姓名", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('A')->setWidth(50);
137 $PHPExcel->getActiveSheet()->setCellValueExplicit('B1', "收件人电话", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('B')->setWidth(20);
138 $PHPExcel->getActiveSheet()->setCellValueExplicit('C1', "收件人地址", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('C')->setWidth(20);
139 $PHPExcel->getActiveSheet()->setCellValueExplicit('D1', "商品条码", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('D')->setWidth(20);
140 $PHPExcel->getActiveSheet()->setCellValueExplicit('E1', "商品数量", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('E')->setWidth(20);
141 $PHPExcel->getActiveSheet()->setCellValueExplicit('F1', "订单备注", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('F')->setWidth(20);
142 $PHPExcel->getActiveSheet()->setCellValueExplicit('G1', "身份证号码", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('G')->setWidth(20);
143 $PHPExcel->getActiveSheet()->setCellValueExplicit('H1', "省市区代码(不填)", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('H')->setWidth(20);
144 $PHPExcel->getActiveSheet()->setCellValueExplicit('I1', "商品金额(业务员必填)", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('I')->setWidth(20);
145 $PHPExcel->getActiveSheet()->setCellValueExplicit('J1', "运费金额(业务员必填)", \PHPExcel_Cell_DataType::TYPE_STRING)->getColumnDimension('J')->setWidth(20);
146 foreach ($array as $k => $val)
147 {
148 $num = $k + 2;
149 $PHPExcel->getActiveSheet()->setCellValueExplicit("A{$num}", "{$val[0]}", \PHPExcel_Cell_DataType::TYPE_STRING);
150 $PHPExcel->getActiveSheet()->setCellValueExplicit("B{$num}", "{$val[1]}", \PHPExcel_Cell_DataType::TYPE_STRING);
151 $PHPExcel->getActiveSheet()->setCellValueExplicit("C{$num}", "{$val[2]}", \PHPExcel_Cell_DataType::TYPE_STRING);
152 $PHPExcel->getActiveSheet()->setCellValueExplicit("D{$num}", "{$val[3]}", \PHPExcel_Cell_DataType::TYPE_STRING);
153 $PHPExcel->getActiveSheet()->setCellValueExplicit("E{$num}", "{$val[4]}", \PHPExcel_Cell_DataType::TYPE_STRING);
154 $PHPExcel->getActiveSheet()->setCellValueExplicit("F{$num}", "{$val[5]}", \PHPExcel_Cell_DataType::TYPE_STRING);
155 $PHPExcel->getActiveSheet()->setCellValueExplicit("G{$num}", "{$val[6]}", \PHPExcel_Cell_DataType::TYPE_STRING);
156 $PHPExcel->getActiveSheet()->setCellValueExplicit("H{$num}", "{$val[7]}", \PHPExcel_Cell_DataType::TYPE_STRING);
157 $PHPExcel->getActiveSheet()->setCellValueExplicit("I{$num}", "{$val[8]}", \PHPExcel_Cell_DataType::TYPE_STRING);
158 $PHPExcel->getActiveSheet()->setCellValueExplicit("J{$num}", "{$val[9]}", \PHPExcel_Cell_DataType::TYPE_STRING);
159 }
160 $objWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel2007');
161 $objWriter->save(time().'.xlsx');
162 }
163 merge_excel();
来源:https://www.cnblogs.com/fqyb/p/9243827.html