CSV转Excel转换

23

是否可以通过apache/.htaccess在请求时将csv文件转换为excel文件?


3
请澄清您的意思。您是指使用内容类型标头伪造Excel文件,还是实际转换文件内容? - Pekka
我看不出将CSV转换为XLS的任何好处,除非您要进行一些基于样式的更改、放置宏或其他符合您需要XLS文件的原因。这就像您特意减少了文件的可移植性。 - Incognito
1
@Incognito 你想将CSV转换为XLS的一个原因是因为iOS上的Office Mobile不支持CSV文件。因此,为了让某人能够在手机上查看通过电子邮件发送的报告文件,它必须以Excel格式呈现。苹果的Numbers电子表格程序支持它们,但Office Mobile不支持。 - Ricky
6个回答

74
使用 PHPExcel
include 'PHPExcel/IOFactory.php';

$objReader = PHPExcel_IOFactory::createReader('CSV');

// If the files uses a delimiter other than a comma (e.g. a tab), then tell the reader
$objReader->setDelimiter("\t");
// If the files uses an encoding other than UTF-8 or ASCII, then tell the reader
$objReader->setInputEncoding('UTF-16LE');

$objPHPExcel = $objReader->load('MyCSVFile.csv');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('MyExcelFile.xls');

我刚刚为了这个目的下载了PHPExcel。感谢提供简明的示例,它帮助我更快地让事情运作起来。 - But those new buttons though..
感谢您的回答。 - Adeel Raza

8

PHPExcel已经过时,您必须使用PhpSpreadsheet

使用PhpSpreadsheet,您可以通过以下代码将csv转换为xlsx:

$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Csv');

// If the files uses a delimiter other than a comma (e.g. a tab), then tell the reader
// $reader->setDelimiter("\t");
// If the files uses an encoding other than UTF-8 or ASCII, then tell the reader
// $reader->setInputEncoding('UTF-16LE');

$objPHPExcel = $reader->load('/home/superman/projects/test/csv-app/file.csv');
$objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($objPHPExcel, 'Xlsx');
$objWriter->save('excel_file.xlsx');

6

使用PhpSpreadsheet

require '../../vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();

/* Set CSV parsing options */

$reader->setDelimiter(',');
$reader->setEnclosure('"');
$reader->setSheetIndex(0);

/* Load a CSV file and save as a XLS */

$spreadsheet = $reader->load('../../uploads/test.csv');
$writer = new Xlsx($spreadsheet);
$writer->save('test.xlsx');

$spreadsheet->disconnectWorksheets();
unset($spreadsheet);

这个对我非常有效!太棒了!!!

5

0

是的,由于Apache是开源的,您可以修改.htaccess解析器以调用库将CSV文件转换为Excel文件。但我认为这不是您要寻找的。 :-).

我认为您真正需要的是一个动态网站。然后,您可以使用PHP或任何支持的语言来完成所需的操作。

像这样的东西: http://www.westwideweb.com/wp/2009/01/12/convert-csv-to-xls-excel-in-php/


0

最后更新于2015年08月04日。但该项目似乎很有趣。 - AnthonyB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接