php处理excel过长表格

问题背景:

需要用php生成一个三百多列的excel表格,已给出表格模板。

处理步骤:
  1. 把表格的列表头导出成txt文本 ( 转换地址)。

  2. 把文本字符串通过explode()函数切割出列名。

3.把生成的代码写入到新建文件中。

 $str = 'FBillHead(SAL_RETURNSTOCK) FBillTypeID FBillTypeID#Name    FBillNo FDate   FSaleOrgId  FSaleOrgId#Name FRetcustId  FRetcustId#Name FSaledeptid FSaledeptid#Name    FReturnReason   FReturnReason#Name  FHeadLocId  FHeadLocId#Name FCorrespondOrgId    FCorrespondOrgId#Name   FTransferBizType    FTransferBizType#Name   FSaleGroupId    FSaleGroupId#Name   FSalesManId FSalesManId#Name    FStockOrgId FStockOrgId#Name    FStockDeptId    FStockDeptId#Name   FStockerGroupId FStockerGroupId#Name    FStockerId  FStockerId#Name FHeadNote   FReceiveCustId  FReceiveCustId#Name FReceiveAddress FSettleCustId   FSettleCustId#Name  FReceiveCusContact  FReceiveCusContact#Name FPayCustId  FPayCustId#Name FOwnerTypeIdHead    FOwnerIdHead    FOwnerIdHead#Name   FScanBox    FCDateOffsetUnit    FCDateOffsetValue   FIsTotalServiceOrCost   F_YJ_Base   F_YJ_Base#Name  F_YJ_Check  F_YJ_BarCode    FSHOPNUMBER FGYDATE *Split*1    SubHeadEntity   FSettleCurrId   FSettleCurrId#Name  FThirdBillNo    FThirdBillId    FThirdSrcType   FSettleOrgId    FSettleOrgId#Name   FSettleTypeId   FSettleTypeId#Name  FChageCondition FChageCondition#Name    FPriceListId    FPriceListId#Name   FDiscountListId FDiscountListId#Name    FLocalCurrId    FLocalCurrId#Name   FExchangeTypeId FExchangeTypeId#Name    FExchangeRate   FBuyerNick  FReceiverAddress    FReceiverName   FReceiverMobile FReceiverCountry    FReceiverState  FReceiverCity   FReceiverDistrict   FReceiverPhone  *Split*2    FEntity F_YJ_SKU    F_YJ_SKU#Name   FRowType    FMapId  FMapId#Name FMaterialId FMaterialId#Name    FAuxpropId#FF100002 FAuxpropId#FF100002#Name    FAuxpropId#FF100003 FAuxpropId#FF100003#Name    FAuxpropId#FF100001 FAuxpropId#FF100001#Name    FUnitID FUnitID#Name    FInventoryQty   FRealQty    FParentMatId    FParentMatId#Name   F_YJ_CodeQty    FPrice  FTaxPrice   FIsFree FTaxCombination FTaxCombination#Name    FEntryTaxRate   FBOMId  FBOMId#Name FReturnType FReturnType#Name    FOwnerTypeId    FOwnerId    FOwnerId#Name   FProduceDate    FExpiryDate FStockId    FStockId#Name   FStockstatusId  FStockstatusId#Name FDeliveryDate   FMtoNo  FNote   FDiscountRate   FPriceDiscount  FAuxUnitQty FExtAuxUnitId   FExtAuxUnitId#Name  FExtAuxUnitQty  FSalCostPrice   FISCONSUMESUM   FLot    FLot#Text   FSalUnitID  FSalUnitID#Name FSalUnitQty FSalBaseQty FPriceBaseQty   FProjectNo  FQualifyType    FEOwnerSupplierId   FEOwnerSupplierId#Name  FIsOverLegalOrg FESettleCustomerId  FESettleCustomerId#Name FSOEntryId  FThirdEntryId   FPriceListEntry FPriceListEntry#Name    FARNOTJOINQTY   F_YJ_Text   FIsReturnCheck  FETHIRDBILLID   FETHIRDBILLNO   *Split*3    FTaxDetailSubEntity FTaxRate    *Split*4    FSerialSubEntity    FSerialNo   FSerialNote
*基本信息(序号)   *(基本信息)单据类型#编码  (基本信息)单据类型#名称   (基本信息)单据编号  *(基本信息)日期   *(基本信息)销售组织#编码  (基本信息)销售组织#名称   *(基本信息)退货客户#编码  (基本信息)退货客户#名称   (基本信息)销售部门#编码   (基本信息)销售部门#名称   (基本信息)退货原因#编码   (基本信息)退货原因#名称   (基本信息)交货地点#编码   (基本信息)交货地点#名称   (基本信息)对应组织#编码   (基本信息)对应组织#名称   (基本信息)跨组织业务类型#编码    (基本信息)跨组织业务类型#名称    (基本信息)销售组#编码    (基本信息)销售组#名称    (基本信息)销售员#编码    (基本信息)销售员#名称    *(基本信息)库存组织#编码  (基本信息)库存组织#名称   (基本信息)库存部门#编码   (基本信息)库存部门#名称   (基本信息)库存组#编码    (基本信息)库存组#名称    (基本信息)仓管员#编码    (基本信息)仓管员#名称    (基本信息)备注    (基本信息)收货方#编码    (基本信息)收货方#名称    (基本信息)收货方地址 (基本信息)结算方#编码    (基本信息)结算方#名称    (基本信息)收货方联系人#编码 (基本信息)收货方联系人#名称 (基本信息)付款方#编码    (基本信息)付款方#名称    (基本信息)货主类型  (基本信息)货主#编码 (基本信息)货主#名称 (基本信息)序列号上传 (基本信息)创建日期偏移单位  (基本信息)创建日期偏移量   (基本信息)整单服务标识    (基本信息)仓库#编码 (基本信息)仓库#名称 (基本信息)是否扫描  (基本信息)条码    (基本信息)网店编码  (基本信息)管易退货日期    间隔列 *财务信息(序号)   *(财务信息)结算币别#编码  (财务信息)结算币别#名称   (财务信息)管易单据编号    (财务信息)第三方单据平台单号 (财务信息)第三方系统来源   *(财务信息)结算组织#编码  (财务信息)结算组织#名称   (财务信息)结算方式#编码   (财务信息)结算方式#名称   (财务信息)收款条件#编码   (财务信息)收款条件#名称   (财务信息)价目表#编码    (财务信息)价目表#名称    (财务信息)折扣表#编码    (财务信息)折扣表#名称    (财务信息)本位币#编码    (财务信息)本位币#名称    (财务信息)汇率类型#编码   (财务信息)汇率类型#名称   (财务信息)汇率    (财务信息)会员名称  (财务信息)收货人地址 (财务信息)收货人   (财务信息)收货人手机 (财务信息)收货人国家 (财务信息)收货人省份 (财务信息)收货人城市 (财务信息)收货人地区 (财务信息)收货人电话 间隔列 *明细信息(序号)   *(明细信息)商品编码#编码  (明细信息)商品编码#名称   (明细信息)产品类型  (明细信息)客户物料编码#编码 (明细信息)客户物料编码#名称 *(明细信息)物料编码#编码  (明细信息)物料编码#名称   (明细信息)杯型#编码 (明细信息)杯型#名称(Null)   (明细信息)规格#编码 (明细信息)规格#名称(Null)   (明细信息)颜色#编码 (明细信息)颜色#名称(Null)   *(明细信息)库存单位#编码  (明细信息)库存单位#名称   (明细信息)当前库存  (明细信息)实退数量  (明细信息)父项产品#编码   (明细信息)父项产品#名称   (明细信息)扫码数量  (明细信息)单价    (明细信息)含税单价  (明细信息)是否赠品  (明细信息)税组合#编码    (明细信息)税组合#名称    (明细信息)税率%   (明细信息)BOM版本#编码  (明细信息)BOM版本#名称  *(明细信息)退货类型#编码  (明细信息)退货类型#名称   *(明细信息)货主类型 *(明细信息)货主#编码    (明细信息)货主#名称 (明细信息)生产日期  (明细信息)有效期至  (明细信息)仓库#编码 (明细信息)仓库#名称 (明细信息)库存状态#编码   (明细信息)库存状态#名称   *(明细信息)退货日期 (明细信息)计划跟踪号 (明细信息)备注    (明细信息)折扣率%  (明细信息)单价折扣  (明细信息)库存辅单位数量   (明细信息)辅单位#编码    (明细信息)辅单位#名称    (明细信息)实退数量(辅单位) (明细信息)销售成本价 (明细信息)消耗汇总  (明细信息)批号#主档 (明细信息)批号#手工 (明细信息)销售单位#编码   (明细信息)销售单位#名称   (明细信息)销售数量  (明细信息)销售基本数量    (明细信息)计价基本数量    (明细信息)项目编号  (明细信息)质量类型  (明细信息)明细货主供应商#编码    (明细信息)明细货主供应商#名称    (明细信息)组织间结算跨法人标识    (明细信息)明细结算组织客户#编码   (明细信息)明细结算组织客户#名称   (明细信息)销售订单EntryId   (明细信息)管易订单单号    (明细信息)行价目表#编码   (明细信息)行价目表#名称   (明细信息) 未关联应收数量(计价单位)    (明细信息)明细单据编号    (明细信息)退货检验  (明细信息)第三方单据ID   (明细信息)第三方单据编号   间隔列 *税务明细(序号)   (税务明细)税率%   间隔列 *序列号子单据体(序号)    (序列号子单据体)序列号    (序列号子单据体)备注
';
        $arr =  explode('   ',$str);


        $myfile = fopen("/Users/computer/Downloads/new.txt", "w") ;


        $n = 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ';
        $arr1 =  explode(' ',$n);

        $t = [];
        $t[] =  '' ;
        $t[] =  'A' ;
        $t[] =  'B' ;
        $t[] =  'C';
        $t[] =  'D';
        $t[] =  'E';
        $t[] =  'F';
        $t[] =  'G';


        $new[] = '*基本信息(序号)';

        foreach ($arr as $k => $v ){
            if($k>= '167'){

                $new[] = $v;
            }


        }


//
//        foreach ($arr as $k => $v ){
//            if($k< '166'){
//
//                $new[] = $v;
//            }
//
//        }
//        $new[] = 'FSerialNote';


        $d = "'";

        $j = 0;

        foreach ($new as $k => $v ){




//           $txt = "->setCellValueExplicit(".$d.$t[$j].$arr1[$k]."1".$d.", ".$d.$v.$d.",DataType::TYPE_STRING)\n";
            $txt = "->setCellValueExplicit(".$d.$t[$j].$arr1[$k].$d.".".'$k'.", ".$d.''.$d.",DataType::TYPE_STRING)\n";

           fwrite($myfile, $txt);

            if(($k+1)%26 == 0 ){

                $j++;
            }

       }

        fclose($myfile);

你可能感兴趣的:(php处理excel过长表格)