Конвертировать HTML-код в XLS / XLSX - PullRequest
2 голосов
/ 02 августа 2011

Я пытаюсь создать лист XLS с несколькими листами, стилями, цветами фона и т. Д. С использованием PHP.Прямо сейчас все данные лежат в таблицах HTML.(Sheet1.html, Sheet2.html ...)

Есть ли какая-либо библиотека для преобразования HTML в один файл xls?

Thx

1 Ответ

2 голосов
/ 02 августа 2011

Вот хороший класс PHP.

http://phpexcel.codeplex.com/

Это общая идея о том, как это сделать. Я предполагаю, что ваши HTML-таблицы находятся в двухмерном массиве. Если это еще не массив, вот хорошая ссылка для преобразования из таблицы HTML в массив в PHP .

$tabledata = array();
$tabledata[0][0] = "value stored in A1";
$tabledata[0][2] = "value stored in B1";
$tabledata[1][0] = "value stored in A2";
$tabledata[1][3] = "value stored in B2";

С первым индексом в качестве строки (номера строк в Excel) и вторым индексом в качестве столбца (буквы столбцов в Excel). Приведенный ниже код является первым примером кода с сайта, и я изменил часть данных, чтобы вставить данные из двумерного массива.

<?php
/** Error reporting */
error_reporting(E_ALL);

/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');

/** PHPExcel */
include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();

// Set properties
echo date('H:i:s') . " Set properties\n";
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");


// Add some data
echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
foreach ($html as $row_index => $row_value) {
  foreach ($row_value as $column_index => $cell_value) {
    $objPHPExcel->getActiveSheet()->SetCellValue("'".chr($column_index+65).($row_index+1)."'", $cell_value);
  }
}
// $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
// $objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
// $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
// $objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');

// Rename sheet
echo date('H:i:s') . " Rename sheet\n";
$objPHPExcel->getActiveSheet()->setTitle('Simple');


// Save Excel 2007 file
echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));

// Echo done
echo date('H:i:s') . " Done writing file.\r\n";
...