我的数据如下所示(点击查看页面来源后),
date \t new_users \t cpm \t earnings \t total_pushes \t avail_users \t application \t
2011-03-31 \t 336933 \t $5.27 \t $10151.2 \t 1925244 \t 1905744 \t Play Movies \t
2011-03-31 \t 205070 \t $5.12 \t $5810.26 \t 1134946 \t 1118354 \t Watch Movies or TV Shows \t
我使用'\ t'对给定数组进行内爆,然后动态写入xls文件.Problem使用这个,所有内容只出现在xls文件的第一列。
我在代码中缺少什么,xls文件是否需要数据格式?
答案 0 :(得分:3)
您应该使用fputcsv来构建您的文件。您不必担心设置分隔符。然后你应该将文件重命名为something.xls。
如果您是通过网络请求处理此问题,请添加以下标头:application / vnd.ms-excel
<?php
// create header array here...$myHeaders
// create data array here... $myData
$csvName = 'temp.csv';
$fp = fopen($csvName, 'w');
fputcsv($fp, $myHeaders);
foreach ($myData as $line) {
fputcsv($fp, $line);
}
fclose($fp);
// now send to browser if this is a web request
$csvData = file_get_contents($csvName);
header('Content-Type: application/vnd.ms-excel');
header('Content-Length: ' . strlen($csvData));
echo $csvData;
exit;
答案 1 :(得分:2)
为了生成有效的xml,你可以使用f.e. PHPExcel
如果您对简化格式感到满意,则可以生成csv文件格式。这对于开放式或MS办公室来说已经足够了。 对于csv,只需将构建的内容放入文件中,或使用fputcsv函数
答案 2 :(得分:1)
看起来您不是在尝试编写XLS而是使用CSV(逗号分隔值)格式。如果是这种情况,请将\t
替换为,
(或;
),并用双引号("
)包装所有值字段(不是列标题)。
Excel应该处理没有问题的格式化的CSV文件。
如果您确实要生成XLS文件,请尝试生成包含数据的HTML表格。将该表的HTML代码放入单个变量中,并使用以下代码将其自动下载为XLS文件:
// Just some example data in a HTML table
$htmlcontent = "<table><tr><th>col1</th><th>col2</th></tr><tr><td>val1-1</td><td>val1-2</td></tr></table>";
// Create as XLS file and send to browser for download
$filename ="data.xls";
header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename='.$filename);
echo $htmlcontent;
这样,您的用户就可以将内容下载为Excel应该能够正常处理的XLS文件。
(PS;您可以尝试使用\t
- 分隔数据作为文件内容而不是HTML表,这可能有用,但我不确定这样做。)