我正在尝试使用php将我的MySQL数据转换为Excel文件。代码工作正常,但我希望字段名称看起来像这样
而不仅仅是这个
以下是代码:
<?php
include_once('config.php');
$xls_filename = 'export_'.date('Y-m-d').'.xls';
$result = mysql_query("Select * from ojt_group3_pole");
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$xls_filename");
header("Pragma: no-cache");
header("Expires: 0");
$sep = "\t";
for ($i = 0; $i<mysql_num_fields($result); $i++) {
echo mysql_field_name($result, $i) . "\t";
}
print("\n");
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("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
$schema_insert .= "\t";
print(trim($schema_insert));
print "\n";
}
?>
答案 0 :(得分:0)
您当前的代码基本上是生成一个CSV文件并给它一个&#34; .xls&#34;扩展并期望Excel在打开文件时执行纠正问题的工作。
CSV格式不支持Excel具有的所有功能,因此单元格合并和样式等内容不会是您可以使用当前方法执行的操作。
您必须使用像PHPExcel这样的库(也可能有其他人)生成真正的Excel文件,然后编写代码来执行mergeCells()之类的操作,以便按照您希望的方式设置电子表格看。一个非常基本的例子:
<?php
// Load the libraries
include 'PHPExcel.php';
include 'PHPExcel/Writer/Excel2007.php';
// Create a new PHPExcel instance
$objPHPExcel = new PHPExcel();
// Set the workbook properties
$objPHPExcel->getProperties()->setCreator("Your name here");
$objPHPExcel->getProperties()->setTitle("My Excel Document");
// Add data
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello world!');
$objPHPExcel->getActiveSheet()->mergeCells('A1:B1');
// Save the file
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save("mynewfile.xlsx");
编辑:有人指出,PHPExcel已被弃用。这里有关于SO的问题列出了一些替代方案:
Alternative for PHP_excel
此处的基本观点是,如果您想使用Excel的格式化功能,则必须生成真正的Excel文档。