将 HTML table 导出到 excel 以及文本和图像
Export HTML table to excel with text and images
其他几个帖子也问过这个问题,但是没有提供解决方案。
我想从 HTML table 中获得带有照片和文本的 Excel 输出。我为Excel输出找到了以下两个插件(我认为最完整的插件):
http://ngiriraj.com/pages/htmltable_export/demo.php
和
<table id="customers" border="1" width="100%" >
<thead>
<tr class='warning'>
<th>Country</th>
<th>Population</th>
<th>Date</th>
<th>%ge</th>
<th>Photo</th>
</tr>
</thead>
<tbody>
<tr>
<td>Chinna</td>
<td>1,363,480,000</td>
<td>March 24, 2014</td>
<td>19.1</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
<tr>
<td>India</td>
<td>1,241,900,000</td>
<td>March 24, 2014</td>
<td>17.4</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
<tr>
<td>United States</td>
<td>317,746,000</td>
<td>March 24, 2014</td>
<td>4.44</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
<tr>
<td>Indonesia</td>
<td>249,866,000</td>
<td>July 1, 2013</td>
<td>3.49</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
<tr>
<td>Brazil</td>
<td>201,032,714</td>
<td>July 1, 2013</td>
<td>2.81</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
</tbody>
并导出为
<a href="#" onClick="$('#customers').tableExport({type:'excel',escape:'false'});">export</a>
我还包含了一个包含图像的专栏,如 this fiddle 所示
如果我将此 table 导出到 Excel,则图像不会显示。那么我怎样才能将这些图像连同数据一起导出呢?应该使用什么样的输出?
如果这在 Excel 输出中是不可能的,输出应该使用什么格式?
如果你不需要一个原始的Excel-文件,而是一个文件,它在Excel中显示你的table的列(并且可以在Excel 或 LibreOffice Calc 或许多其他程序),您应该考虑使用 CSV (comma-separated values).
易于创建和编辑,无需使用任何插件或库。
可能的输出
Column Name 1, Column Name 2, Column Name 3
'Row1Val1', 'Row1Val2', 'Row1Val3'
'Row2Val1', 'Row2Val2', 'Row2Val3'
'Row3Val1', 'Row3Val2', 'Row3Val3'
转换为Excel
但是如果你真的想要一个 Excel 文件,
PHPExcel 会成为你的朋友。它使用 CSV 文件创建一个完全可操作的 Excel-File.
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');
示例代码片段来自:csv to excel conversion
图片插入
PHP Excel 提供包含图像的功能:
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('PHPExcel logo');
$objDrawing->setDescription('PHPExcel logo');
$objDrawing->setPath('./images/phpexcel_logo.gif'); // filesystem reference for the image file
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('D24');
$objDrawing->setOffsetX(10);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
片段来自 CodePlex。
其他几个帖子也问过这个问题,但是没有提供解决方案。 我想从 HTML table 中获得带有照片和文本的 Excel 输出。我为Excel输出找到了以下两个插件(我认为最完整的插件):
http://ngiriraj.com/pages/htmltable_export/demo.php
和
<table id="customers" border="1" width="100%" >
<thead>
<tr class='warning'>
<th>Country</th>
<th>Population</th>
<th>Date</th>
<th>%ge</th>
<th>Photo</th>
</tr>
</thead>
<tbody>
<tr>
<td>Chinna</td>
<td>1,363,480,000</td>
<td>March 24, 2014</td>
<td>19.1</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
<tr>
<td>India</td>
<td>1,241,900,000</td>
<td>March 24, 2014</td>
<td>17.4</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
<tr>
<td>United States</td>
<td>317,746,000</td>
<td>March 24, 2014</td>
<td>4.44</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
<tr>
<td>Indonesia</td>
<td>249,866,000</td>
<td>July 1, 2013</td>
<td>3.49</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
<tr>
<td>Brazil</td>
<td>201,032,714</td>
<td>July 1, 2013</td>
<td>2.81</td>
<td><img src="http://i.stack.imgur.com/CekuQ.jpg" width='60' height='60'/></td>
</tr>
</tbody>
并导出为
<a href="#" onClick="$('#customers').tableExport({type:'excel',escape:'false'});">export</a>
我还包含了一个包含图像的专栏,如 this fiddle 所示
如果我将此 table 导出到 Excel,则图像不会显示。那么我怎样才能将这些图像连同数据一起导出呢?应该使用什么样的输出?
如果这在 Excel 输出中是不可能的,输出应该使用什么格式?
如果你不需要一个原始的Excel-文件,而是一个文件,它在Excel中显示你的table的列(并且可以在Excel 或 LibreOffice Calc 或许多其他程序),您应该考虑使用 CSV (comma-separated values).
易于创建和编辑,无需使用任何插件或库。
可能的输出
Column Name 1, Column Name 2, Column Name 3
'Row1Val1', 'Row1Val2', 'Row1Val3'
'Row2Val1', 'Row2Val2', 'Row2Val3'
'Row3Val1', 'Row3Val2', 'Row3Val3'
转换为Excel
但是如果你真的想要一个 Excel 文件, PHPExcel 会成为你的朋友。它使用 CSV 文件创建一个完全可操作的 Excel-File.
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');
示例代码片段来自:csv to excel conversion
图片插入
PHP Excel 提供包含图像的功能:
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('PHPExcel logo');
$objDrawing->setDescription('PHPExcel logo');
$objDrawing->setPath('./images/phpexcel_logo.gif'); // filesystem reference for the image file
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('D24');
$objDrawing->setOffsetX(10);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
片段来自 CodePlex。