php导出excel(xls或xlsx)(解决长数字显示问题)

Posted Tiac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php导出excel(xls或xlsx)(解决长数字显示问题)相关的知识,希望对你有一定的参考价值。

2020 补充:https://www.cnblogs.com/tujia/p/11358096.html

 

1)demo

$titles                = array(\'订单号\',\'商品结算码\',\'合同号\',\'供应商名称\',\'专柜\',\'商品名称\',\'商品货号\',\'商品单价\',\'商品总价\',\'供应商结算金额\',\'商品数量\',\'商品促销优惠\',\'平台优惠抵扣\',\'品牌订单优惠抵扣\');

//导出准备
ob_get_clean();
ob_start();
echo implode("\\t", $titles),"\\n";

$currencyModel      = app::get(\'ectools\')->model(\'currency\');
foreach ($lists as $key=>$value) {
    $row                             = array();
    $row[\'order_id\']                = html_entity_decode("".$value[\'order_id\']);
    $row[\'supplier_num\']            = $value[\'supplier_num\'];
    $row[\'agreement_code\']            = $value[\'agreement_code\'];
    $row[\'supplier_name\']            = $value[\'supplier_name\'];
    $row[\'shoppe_name\']                = $value[\'shoppe_name\'];
    $row[\'name\']                    = $value[\'name\'];
    $row[\'bn\']                        = $value[\'bn\'];
    $row[\'price\']                   = $value[\'price\'];
    $row[\'nums\']                    = $value[\'nums\'];
    $row[\'g_price\']                 = $value[\'g_price\'];
    $row[\'settlement_amount\']       = $value[\'settlement_amount\'];
    $row[\'goods_amount_off\']         = $value[\'goods_amount_off\'];
    $row[\'amount_off\']                 = $value[\'amount_off\'];
    $row[\'brand_amount_off\']         = $value[\'brand_amount_off\'];

    echo implode("\\t", $row),"\\n";
}

header(\'Content-Disposition: attachment; filename=\'.$filename);
header(\'Accept-Ranges:bytes\');
header(\'Content-Length:\' . ob_get_length());
header(\'Content-Type:application/vnd.ms-excel\');
ob_end_flush();

 

2)格式选择

需要导出xls的话,用

header(\'Content-Type:application/vnd.ms-excel\');

需要导出xlsx的话,用

header(\'Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\');

xls和xlsx的区别的话,是储存数据量大小的问题,xls只可以保存大概5、6w数据,xlsx可以100w左右

 

3)长数字完整显示解决办法

$row[\'order_id\']                = html_entity_decode("".$value[\'order_id\']);

就是先拼上html 特殊字符 ï»¿,再转回去的意思

 

PS:这个办法,是从phpExcel上逆回去找到的

我把PHPExcel生成的数字复制到txt文件里,再解释它是什么东东,然后就发现这个东西了

 

以上是关于php导出excel(xls或xlsx)(解决长数字显示问题)的主要内容,如果未能解决你的问题,请参考以下文章

C#或.net中用NPIO要怎样才能导出2007以上的Excel(.xlsx)?

Apache POI 4.0.1版本 Excel导出数据案例(兼容 xls 和 xlsx)

s-s-rS 2008 是不是支持导出为 .xlsx 格式而不是 .xls

winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

C# NPOI 导入与导出Excel文档 兼容xlsx, xls(xf13中已经引用了xlsx的npoi)

PHP 和 JS 导入导出csv表格(上)