我正在网站上工作,我需要制作一个excel文件或至少一个在excel中打开的csv文件。 我尝试了很多东西。我在谷歌,stackoverflow等搜索解决方案。但我找到的一切似乎不适合我。我尝试了jQuery解决方案,并尝试了PHP解决方案。
JSFiddle:http://jsfiddle.net/terryyounghk/KPEGU/
当我用这个小提琴制作一个csv时,输出是:
我希望输出是单独的colums,而不是一个。
这也是我尝试的PHP解决方案:
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment;Filename=document_name.xls");
echo "<html>";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
echo "<body>";
echo "<table>";
echo "<tr>";
echo "<td>Henk</td>";
echo "<td>Henk2</td>";
echo "</tr>";
echo "<tr>";
echo "<td>bob</td>";
echo "<td>bob2</td>";
echo "</tr>";
echo "</table>";
echo "</body>";
echo "</html>";
输出:
此处输出位于右侧列和行中。但不知怎的,我无法获得网格线。
这只是我试过的吨数的两个例子。有人知道如何解决这个问题吗?
答案 0 :(得分:1)
在您提供的JsFiddle示例中 - 将colDelim = '","'
更改为colDelim = '";"'
,因为它需要逗号分隔值;
才能使字符串落入不同的单元格
答案 1 :(得分:0)
我可以看到你在考虑使用表格来进行格式化,但CSV是以逗号分隔的。
我发现最好的方法是使用这样的数组:
// setup array. Note null values to create empty cells
$list = array(
array('First row', NULL, 'some_data', NULL),
array('Second row', 'some data', NULL, 'some data'),
);
// set header types
header("Content-type: text/csv");
header("Cache-Control: no-store, no-cache");
header('Content-Disposition: attachment; filename="most_popular-'.$_POST['start_date'].'-'.$_POST['end_date'].'.csv"');
// tell php to open the page as an output (download)
$outstream = fopen("php://output",'w');
// loop through and put each array row into the csv, comma seperated.
foreach( $list as $row )
{
fputcsv($outstream, $row, ',');
}
exit;
请记住,数组中的每一行都需要与其他行完全相同,否则生成csv的循环将会非常混乱。
答案 2 :(得分:0)
**Try this**
<?php
error_reporting(E_ERROR);
include("dbConnect.inc.php");
//$ip = $_SERVER['HTTP_CLIENT_IP
$select_table=mysql_query("SELECT * FROM `key_cat`");
$setExcelName="Keyword_reports";
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename='.$setExcelName.'.csv');
/*
$setExcelName="Keywords";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$setExcelName."_Reoprt.xls");
header("Pragma: no-cache");
header("Expires: 0");
*/
$rows = mysql_fetch_assoc($select_table);
if($rows)
{
getcsv(array_keys($rows));
}
while($rows)
{
getcsv($rows);
$rows = mysql_fetch_assoc($select_table);
}
// get total number of fields present in the database
function getcsv($no_of_field_names)
{
$separate = '';
// do the action for all field names as field name
foreach ($no_of_field_names as $field_name)
{
if (preg_match('/\\r|\\n|,|"/', $field_name))
{
$field_name = '' . str_replace('', $field_name) . '';
}
echo $separate . $field_name;
//sepearte with the comma
$separate = ',';
}
//make new row and line
echo "\r\n";
}
?>