PHP XLSXWriter-不同的格式

PHP XLSXWriter-不同的格式,php,html,excel,xlsx,xlsxwriter,Php,Html,Excel,Xlsx,Xlsxwriter,我正在使用代码生成一个XLSX文件。该文件正在生成中,并在Excel中打开,但我使用此文件上载到DHL服务器以生成装运订单。问题是,他们的服务正在抱怨一个无效的行。那一行中的数据实际上非常好,Excel可以像我提到的那样读取它。然而,作为测试,我所做的是将PHP生成的电子表格保存为一个单独的文件,从而使Microsoft Excel保存为自己的格式。当我把微软的工作表上传到DHL服务器时,它接受了,没有任何问题 在对两者进行十六进制比较之后,它们完全不同,这让我相信PHP生成的XLSX文件使用的

我正在使用代码生成一个XLSX文件。该文件正在生成中,并在Excel中打开,但我使用此文件上载到DHL服务器以生成装运订单。问题是,他们的服务正在抱怨一个无效的行。那一行中的数据实际上非常好,Excel可以像我提到的那样读取它。然而,作为测试,我所做的是将PHP生成的电子表格保存为一个单独的文件,从而使Microsoft Excel保存为自己的格式。当我把微软的工作表上传到DHL服务器时,它接受了,没有任何问题

在对两者进行十六进制比较之后,它们完全不同,这让我相信PHP生成的XLSX文件使用的是OpenOffice或LibreOffice格式,而DHL没有使用

有没有办法解决这个问题? 我的一个想法是放弃PHP XLSXWriter功能,将数据保存为带有制表符分隔数据(DHL也接受)的原始文本文件

下面是我的代码中主要函数的一个简短示例:

$filename=“test.xlsx”;
标题('Access-Control-Allow-Origin:mysite.com');
标题('Content-disposition:attachment;filename=“”.XLSXWriter::sanitize_filename($filename)。“);
标题(“内容类型:application/vnd.openxmlformats officedocument.spreadsheetml.sheet”);
标题(“内容传输编码:二进制”);
标头(“缓存控制:必须重新验证”);
标题(“Pragma:public”)

值得注意的是,DHL服务器似乎在抱怨行中包含“PPS”的数据


谢谢。

通过编写选项卡分隔的文件来解决:

    header("Content-type: text/csv");
    header("Content-Disposition: attachment; filename=example.txt");
    header("Pragma: no-cache");
    header("Expires: 0");

    $rows = array(
    array('Pick-up Account Number', 'Sales Channel',    'Shipment Order ID',    'Tracking Number',  'Shipping Service Code',    'Company',                      'Consignee Name',                                               'Address Line 1',               'Address Line 2',               'Address Line 3',               'City',                 'State',                        'Postal Code',                  'Destination Country Code',     'Phone Number',         'Email Address',        'Shipment Weight (g)',  'Length (cm)',  'Width (cm)',   'Height (cm)',  'Currency Code',    'Total Declared Value',     'Incoterm', 'Freight',  'Is Insured',   'Insurance',    'Is COD',   'Cash on Delivery Value',   'Recipient ID', 'Recipient ID Type',    'Duties',   'Taxes',    'Workshare Indicator',  'Shipment Description', 'Shipment Import Description',  'Shipment Export Description',  'Shipment Content Indicator',   'Content Description',  'Content Import Description',   'Content Export Description',   'Content Unit Price',   'Content Origin Country',   'Content Quantity', 'Content Weight (g)',   'Content Code', 'HS Code',  'Content Indicator',    'Remarks',  'Shipper Company',  'Shipper Name', 'Shipper Address1', 'Shipper Address2', 'Shipper Address3', 'Shipper City', 'Shipper State',    'Shipper Postal Code',  'Shipper CountryCode',  'Shipper Phone Number', 'Shipper Email address',    'Return Company',   'Return Name',  'Return Address Line 1',    'Return Address Line 2',    'Return Address Line 3',    'Return City',  'Return State', 'Return Postal Code',   'Return Destination Country Code',  'Return Phone Number',  'Return Email Address', 'Service1', 'Service2', 'Service3', 'Service4', 'Service5', 'Grouping Reference1',  'Grouping Reference2',  'Customer Reference 1', 'Customer Reference 2',),               
    array('123456789',              '',                 $order_id,              '',                 'PPS',                      $order->shipping_company,       $order->shipping_first_name.' '.$order->shipping_last_name,     $order->shipping_address_1,     $order->shipping_address_2,     $order->shipping_address_3,     $order->shipping_city,  $order->shipping_state,         $order->shipping_postcode,      $order->shipping_country,       $order->billing_phone,  $order->billing_email,  '160',                  '18',           '13',           '6',            'AUD',              '70',                       '',         '',         '',             '',             '',         '',                         '',             '',                     '',         '',         '',                     'Printer Cartridge',    '',                             '',                             '',                             'Printer Cartridge',    '',                             '',                             '70',                   'AU',                       '1',                '',                     'TEST_2214',    '',         '',                     '',         '',                 '',             '',                 '',                 '',                 '',             '',                 '',                     '',                     '',                     '',                         '',                 '',             '',                         '',                         '',                         '',             '',             '',                     '',                                 '',                     '',                     '',         '',         '',         '',         '',         '',                     '',                     '',                     '',),               
);

    foreach ($rows as $arr)
    {
       $row = implode("\t", $arr);
       $row.="\n";
       echo $row;
    }
这将生成正确的数据,DHL将接受该数据。谢谢

    header("Content-type: text/csv");
    header("Content-Disposition: attachment; filename=example.txt");
    header("Pragma: no-cache");
    header("Expires: 0");

    $rows = array(
    array('Pick-up Account Number', 'Sales Channel',    'Shipment Order ID',    'Tracking Number',  'Shipping Service Code',    'Company',                      'Consignee Name',                                               'Address Line 1',               'Address Line 2',               'Address Line 3',               'City',                 'State',                        'Postal Code',                  'Destination Country Code',     'Phone Number',         'Email Address',        'Shipment Weight (g)',  'Length (cm)',  'Width (cm)',   'Height (cm)',  'Currency Code',    'Total Declared Value',     'Incoterm', 'Freight',  'Is Insured',   'Insurance',    'Is COD',   'Cash on Delivery Value',   'Recipient ID', 'Recipient ID Type',    'Duties',   'Taxes',    'Workshare Indicator',  'Shipment Description', 'Shipment Import Description',  'Shipment Export Description',  'Shipment Content Indicator',   'Content Description',  'Content Import Description',   'Content Export Description',   'Content Unit Price',   'Content Origin Country',   'Content Quantity', 'Content Weight (g)',   'Content Code', 'HS Code',  'Content Indicator',    'Remarks',  'Shipper Company',  'Shipper Name', 'Shipper Address1', 'Shipper Address2', 'Shipper Address3', 'Shipper City', 'Shipper State',    'Shipper Postal Code',  'Shipper CountryCode',  'Shipper Phone Number', 'Shipper Email address',    'Return Company',   'Return Name',  'Return Address Line 1',    'Return Address Line 2',    'Return Address Line 3',    'Return City',  'Return State', 'Return Postal Code',   'Return Destination Country Code',  'Return Phone Number',  'Return Email Address', 'Service1', 'Service2', 'Service3', 'Service4', 'Service5', 'Grouping Reference1',  'Grouping Reference2',  'Customer Reference 1', 'Customer Reference 2',),               
    array('123456789',              '',                 $order_id,              '',                 'PPS',                      $order->shipping_company,       $order->shipping_first_name.' '.$order->shipping_last_name,     $order->shipping_address_1,     $order->shipping_address_2,     $order->shipping_address_3,     $order->shipping_city,  $order->shipping_state,         $order->shipping_postcode,      $order->shipping_country,       $order->billing_phone,  $order->billing_email,  '160',                  '18',           '13',           '6',            'AUD',              '70',                       '',         '',         '',             '',             '',         '',                         '',             '',                     '',         '',         '',                     'Printer Cartridge',    '',                             '',                             '',                             'Printer Cartridge',    '',                             '',                             '70',                   'AU',                       '1',                '',                     'TEST_2214',    '',         '',                     '',         '',                 '',             '',                 '',                 '',                 '',             '',                 '',                     '',                     '',                     '',                         '',                 '',             '',                         '',                         '',                         '',             '',             '',                     '',                                 '',                     '',                     '',         '',         '',         '',         '',         '',                     '',                     '',                     '',),               
);

    foreach ($rows as $arr)
    {
       $row = implode("\t", $arr);
       $row.="\n";
       echo $row;
    }