【发布时间】:2019-11-01 04:02:24
【问题描述】:
我有一个包含许多列的表。有些列包含数值,有些包含文本,有些包含日期。
当我尝试将数据导出到 Excel 时,可以导出数值和值,但是当我想要导出日期数据时,它显示此错误“无法将类 DateTime 的对象转换为字符串”。
我的导出功能的工作方式是,用户可以选择他们想要从 SQL 导出的列通过 PHP 导出到 excel。我的列存储在数组中。以下是我的代码:
//Get list of selected column from selected checkboxes
$colarray = $_GET['colarray'];
//convert string to array
$string1 = ['[',']'];
$string2 = ["",""];
$newcolarray = str_replace($string1, $string2, $colarray);
$newarray = explode(",",$newcolarray);
$filename = "File name " . date('d-M-y') . ".csv"; // Create file name
$f = fopen('php://memory', 'w');
//Insert column name in first row of excel
fputcsv($f, $newarray);
//dynamic Select query statement
$query = "SELECT ";
$query .= $colarray;
$query .= " FROM OVERALL_SUMMARY_ORIGINAL"; // Get data from Database from OVERALL_SUMMARY_ORIGINAL table
$stmt = sqlsrv_query($conn, $query);
while($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
/**how can i place this code $row['Date']->format('d M Y') here***/
fputcsv($f, $row);
}
//move back to beginning of file
fseek($f, 0);
//set headers to download file rather than displayed
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');
//output all remaining data on a file pointer
fpassthru($f);
由于我的列存储在数组中以导出到 csv,任何人都可以帮助我将日期数据转换为字符串吗?
【问题讨论】:
-
您有评论的地方,请输入
$row['Date'] = $row['Date']->format('d M Y'); -
@Nick 这绝对行不通,我必须声明一个变量 $date = $row['Date']->format('d M Y') 但是我在哪里放置 $日期,因为我将数组插入到我的 csv 中,并且数组取决于选定的列。
-
我的意思是将
$row['Date']中的DateTime对象替换为该日期的字符串表示形式。我不明白为什么这不起作用? -
@Nick 非常抱歉。我误解了你的第一条评论。现在可以了。非常抱歉
-
完全没问题。我很高兴你能成功。
标签: php excel export-to-csv sqlsrv sql-server-2012-express