zoukankan      html  css  js  c++  java
  • 使用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

      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();
  • 相关阅读:
    Eclipse快捷键大全,导包快捷键:ctrl+Shift+/【转】
    xml合并工具【原】
    解决win10无线无故断网,重启才恢复正常的情况【原】
    PL/SQL可以连oracle,但是jdbc连不上 【转】
    Java 编程下使用 Class.forName() 加载类【转】
    Http请求中Content-Type讲解以及在Spring MVC中的应用【转】
    activeMQ
    概念,包括对象,接口,类,方法
    javabean
    session
  • 原文地址:https://www.cnblogs.com/fqyb/p/9243827.html
Copyright © 2011-2022 走看看