问题背景:
需要用php生成一个三百多列的excel表格,已给出表格模板。
处理步骤:
把表格的列表头导出成txt文本 ( 转换地址)。
把文本字符串通过
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);