我想将我的php网页导出为excel。
为此,我发现以下代码有效但有问题。
列中的值以php中的'00003421'开头,但是当它在excel中导出时,它在单元格中仅显示'3421'。它忽略了零值。而且,我希望它们是文本数据类型。
如何以纯文本格式导出数据(包括零)?
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=export.xls");
header("Content-Transfer-Encoding: BINARY");
这是包含4列和大约20,000行的表格数据。
答案 0 :(得分:8)
一种可能的解决方案是创建一个新值Binder方法来覆盖PHPExcel方法。 (PHPExcel试图猜测我们在单元格中插入的数据类型。所以,按照markBaker的建议,我创建了这个类来覆盖这个方法:
class PHPExcel_Cell_MyValueBinder extends PHPExcel_Cell_DefaultValueBinder
implements PHPExcel_Cell_IValueBinder
{
public function bindValue(PHPExcel_Cell $cell, $value = null) {
// sanitize UTF-8 strings
if (is_string($value)) {
$value = PHPExcel_Shared_String::SanitizeUTF8($value);
}
// if it is a string and starts with 0, the value will be converted into string
if (is_string($value) && $value[0] == '0') {
$cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
return true;
}
return parent::bindValue($cell, $value);
}
}
这是markbaker在question中向我推荐的一个提示。
答案 1 :(得分:2)
如果您的单元格数据类型不是0
,则text
只是隐藏,选择Excel中的所有单元格,并将数据类型设置为text
。
或者尝试为php中的每个值添加单引号'00003421'
到'\'00003421'
,如果数字以单引号开头,则excel会知道这是text
数据类型。< / p>
答案 2 :(得分:0)
我通过以下方式解决了这个问题。
你可以试试这个
git blame