dsjhejw3232 2018-03-26 13:17
浏览 117
已采纳

使用PHP将MySQL数据保存到Excel工作表

I am trying to write data from database to a downloadable excel sheet. The code is working in the sense that it downloads the file with the desired name. However if I open the Excel sheet the cells are empty and my data is not in the sheet.

Here is my code

require_once('include/connect_pdo.php');
$myschool = $_POST['country'];

$findschool = $conn->prepare("SELECT Query");
$findschool->execute();

$filename = "Name"; 
$file_ending = "xls";

//header info for browser
header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename= $filename.xls");  
header("Pragma: no-cache"); 
header("Expires: 0");

/*******Start of Formatting for Excel*******/   

//define separator (defines columns in excel & tabs in word)
$sep = "\t"; //tabbed character

//start of printing column names as names of MySQL fields
for ($i = 0; $i < mysql_num_fields($result); $i++) {
    echo mysql_field_name($result,$i) . "\t";
}
print("
");    

//end of printing column names  
//start while loop to get data
while($row = mysql_fetch_row($result))
{
    $schema_insert = "";
    for($j = 0; $j < mysql_num_fields($result); $j++)
    {
        if(!isset($row[$j]))
            $schema_insert .= "NULL".$sep;
        elseif ($row[$j] != "")
            $schema_insert .= "$row[$j]".$sep;
        else
            $schema_insert .= "".$sep;
    }
    $schema_insert = str_replace($sep."$", "", $schema_insert);
    $schema_insert = preg_replace("/
|
|
|/", " ", $schema_insert);
    $schema_insert .= "\t";
    print(trim($schema_insert));
    print "
";
}   
  • 写回答

2条回答 默认 最新

  • drfu29983 2018-03-26 23:22
    关注

    This sorted my problem.

    Header('Content-Description: File Transfer');
    Header('Content-Encoding: UTF-8');
    Header('Content-type: text/csv; charset=UTF-8');
    Header('Content-Disposition: attachment; filename=' . '$filename' . '.csv');
    echo "\xEF\xBB\xBF"; // UTF-8 BOM
    
    $output = fopen("php://output", "w");
    fputcsv($output, array('Number1', 'Number 2'));
    $findschool = $conn->prepare("SELECT Query Here);
    $findschool->execute();
    while ($result = $findschool->fetch(PDO::FETCH_ASSOC)) {
    
    fputcsv($output, $result);  
    }
    fclose($output);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)