通过 php 导出到 excel 文件时如何保持 mysql 数据的格式


How to keep format of mysql data when exporting to excel file via php

我使用非常简单的php代码将MySql数据导出到excel文件,但是我在excel数据中遇到了一个非常烦人的问题。我对除一列以外的所有数据都没问题,该列作为 varchar 存储在 MySQL 中并包含帐户号。的用户,它通常以前导零开头,如0000111122356、0002345679855、025478961694等。当我将相同的数据导出到 excel 时,它会删除前导零,我得到了111122356、2345679855、25478961694等,这对我来说是不可接受的。我的 php 代码用于导出 excel 文件 -

include('db_connect.php');
$export = mysql_query('Select name, address, bank, bank_account from users') ;
$fields = mysql_num_fields ( $export );
//with database field names
for ( $i = 0; $i < $fields; $i++ ) {
$header .= mysql_field_name( $export , $i ) . "'t";
}
while( $row = mysql_fetch_row( $export ) ) {
$line = '';
//for each field in the row
foreach( $row as $value ) {
    //if null, create blank field
    if ( ( !isset( $value ) ) || ( $value == "" ) ){
        $value = "'t";
    }
    //else, assign field value to our data
    else {
        $value = str_replace( '"' , '""' , $value );
        $value = '"' . $value . '"' . "'t";
    }
    //add this field value to our row
    $line .=  $value;
}
//trim whitespace from each row
$data .= trim( $line ) . "'n";
}
//remove all carriage returns from the data
$data = str_replace( "'r" , "" , $data );
$file_name = 'excel_data' ;
//create a file and send to browser for user to download
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: filename=".$file_name.".xls");
print "$header'n$data";

MySQL 表格式 -

id(int) name(varchar) address(varchar) bank bank_account(varchar)
1       abd           delhi            0000111122356  
2       xyz           delhi            0002345679855
3       pqr           delhi            025478961694

任何人都可以建议我在我的代码中进行一些更改和技巧来处理这种情况。我需要导出存储在mysql中的相同数据而无需更改。

我建议使用库来创建像 PHP Excel 这样的 Excel 文件,并在放入任何值之前将文档的单元格格式化为文本,如果它们被格式化为数字,那么 excel 将去掉零。

在导出到 excel 之前,尝试在带有前导零的单元格前面放置一个撇号 ( ' )。这样,Excel 应将其解释为文本。自己没有尝试过,但我认为值得尝试