【问题标题】:csv to excel conversioncsv到excel的转换
【发布时间】:2011-04-21 22:48:12
【问题描述】:

有没有办法通过 apache/.htaccess 请求将 csv 文件转换为 excel 文件

【问题讨论】:

  • 请澄清您的意思。你的意思是使用内容类型标题伪造一个 excel 文件,还是实际转换内容?
  • 我看不到将 CSV 转换为 XLS 的任何好处,除非您要进行一些基于样式的更改、放入宏或符合您需要 XLS 文件的原因的要求。就好像您已经竭尽全力降低文件的可移植性。
  • @Incognito 您想要从 CSV 转换为 XLS 的原因之一是 iOS 上的 Office Mobile 不支持 CSV 文件。因此,要让某人能够在手机上查看通过电子邮件发送的报告文件,它必须是 Excel 格式。 Apple 的 Numbers 电子表格程序支持它们,但 Office Mobile 不支持。

标签: php linux apache command-line


【解决方案1】:

使用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 来达到这个目的。感谢您提供简洁的示例,它帮助我更快地完成工作。
  • 感谢您的回答。
【解决方案2】:

不推荐使用 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');

【讨论】:

    【解决方案3】:

    注意:PHPExcel 现在列为DEPRECATED

    用户被定向到PhpSpreadsheet

    【讨论】:

      【解决方案4】:

      使用PhpSpreadheet:

      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】:

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

        我认为您真正需要的是一个动态网站。然后你可以使用 PHP 或任何支持的语言来做你需要做的事情。

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

        【讨论】:

          【解决方案6】:

          sourceforge 中有一个项目可以进行这种转换:

          http://sourceforge.net/projects/py-csv2xls/

          但是对于转换你需要在apache中制作一个动态页面(在python、php中...)

          【讨论】:

          • 最后一次更新是在 2015-08-04。但这个项目似乎很有趣。
          猜你喜欢
          • 2021-06-02
          • 2014-05-22
          • 1970-01-01
          • 2016-07-02
          • 2017-07-04
          • 2014-11-19
          • 2012-10-10
          • 2016-11-30
          • 1970-01-01
          相关资源
          最近更新 更多