我使用Ajax Web Table来显示数据库/表中显示的数据。当我把我的文件导出到excel电子表格字段后,一定长度显示为xxE+XX。因此,例如,如果我有一个字段的值为123456789导出时,我将得到12.34E+9。
有办法绕过这个吗?
我的代码如下
else if(isset($_GET['export']))
{
session_start();
ob_start();
$this->mysqlConnect();
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=report.xls");
header("Pragma: no-cache");
header("Expires: 0");
$select = "SELECT * FROM customers";
$export = mysql_query($select);
$count = mysql_num_fields($export);
for ($i = 0; $i < $count; $i++) {
$header .= mysql_field_name($export, $i)."'t";
}
while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "'t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "'t";
}
$line .= $value;
}
$data .= trim($line)."'n";
}
$data = str_replace("'r", "", $data);
if ($data == "") {
$data = "'n(0) Records Found!'n";
}
print "$header'n$data";
exit();
非常感谢所有的帮助和反馈!
编辑phpMyAdmin在选择"csv"或"excel"格式时有同样的问题。但是当导出为MS-Excel 2000时,它解决了这个问题。有人知道输出的区别吗?
我还没有测试过,但我认为可以通过将数字指定为字符串值来防止这种情况。=
符号应该让excel知道该值是一个"公式",它是一个字符串,如下所示:
$value = '="12345678901234567890"';
使用字符串值是我所知道的绕过指数表示法的唯一方法,因为Excel出于显示原因更喜欢缩短大数字。您可以看到,实际值保持不变,并且可以在选择单元格时在公式栏中查看,即使显示的是指数。
是否将其保存为字符串将打破数值公式/功能是我无法解决的问题。对我来说,仅仅为了避免指数显示而使用字符串似乎是不明智的,因为它只是一个显示。该数值在您的数据中仍然是正确的