Есть конвертер, берёт хтмл страницу, вырезает оттуда таблицы и пихает их в эксель файл. Он сейчас умеет определять формулы сумм и разметку страницы. Осталось только типы ячеек (процентный, дата и т.д.). Вот с этим проблема, не могу сделать. Подскажите как лучше реализовать? Желательно листингом /*========================== РАЗДЕЛ КОДА ==============================*/ //Задать активный лист (ExcelPage) $ExcelFile->setActiveSheetIndex($NumberList); $ExcelPage = $ExcelFile->getActiveSheet(); //Бесполезные настройки но пусть будет $ExcelPage->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT); $ExcelPage->getPageSetup()->SetPaperSize(PHPExcel_Worksheet_PageSetup:APERSIZE_A4); $ExcelPage->setTitle("Таблица "); //Настройки шрифта $ExcelFile->getDefaultStyle()->getFont()->setName('Times new roman'); $ExcelFile->getDefaultStyle()->getFont()->setSize(8); // Заполнить лист EXCEL данными //Получить содержимое первой HTML-таблицы $tableContent = TagContent($htmlCode, "table"); //Отрезать от входного для программы HTML-кода, уже сохранённую в EXCEL-файл таблицу $htmlCode = delFirstTable($htmlCode); $numberNowString = 1; //Номер текущей, рассматриваемой строки таблицы //Разбор HTML-таблицы на строки while (stripos($tableContent, $openTag."tr")!== false) { //Получить содержимое текущей, исследуемой строки таблицы $ContentNowString = TagContent($tableContent,"tr"); //Отрезать от содержимого таблицы первую строку $tableContent = substr($tableContent, strpos($tableContent, "/tr".$closeTag)+3, strlen($tableContent)-strpos($tableContent, "/tr".$closeTag)+3); // Сброс номера изменяемой ячейки строки на ноль $numberCellOfString = 0; //---Для формул. Количество ячеек в строке $CellCount=CountCells($ContentNowString); //---Для формул. Переменная суммы значений строки таблицы $sum=0; //---Для формул. Счётчик номеров обрабатываемых ячеек строки $WhileCounter_forCells=0; //Разбор текущей строки таблицы на ячейки while (stripos($ContentNowString, $openTag."td")!== false) { //Позиция ячейки в строке $WhileCounter_forCells++; //Получить значение ячейки таблицы $contentCell = Cell_Content($ContentNowString); //---Для формул. Если это не последняя ячейка строки if($WhileCounter_forCells < $CellCount){ //---Для формул. Подсчитываем сумму значений ячеек строки $sum=$sum+$contentCell; }else{ //---Для формул. Если текущая ячейка последняя в строке, то сравниваем её с суммой значений ячеек строки if($sum==$contentCell) { //---Для формул. Заменяем значение ячейки на формулу суммы строки $contentCell='=SUM(A'.$numberNowString.':'.Conv($WhileCounter_forCells -2).$numberNowString.')'; } } //Получить значение свойства Colspan (объединение ячеек по горизонтали) $N_Colspan = Cell_Properties($ContentNowString,'colspan'); //Отрезать от содержимого строки считанную ячейку $ContentNowString = substr($ContentNowString, strpos($ContentNowString, "/td".$closeTag)+3, strlen($ContentNowString)-strpos($ContentNowString, "/td".$closeTag)+3); //Пишем значение в ячейку $ExcelPage->setCellValue(Conv($numberCellOfString).$numberNowString, $contentCell); //Если текущая ячейка объединяется с другими по горизонтали if($N_Colspan>0){ //Объединяем ячейки EXCEL-таблицы $ExcelPage->mergeCells(Conv($numberCellOfString).$numberNowString.':'.Conv($numberCellOfString+$N_Colspan-1).$numberNowString); $numberCellOfString = $numberCellOfString+$N_Colspan-1; } //Сдвигаем номер рассматриваемой ячейки (нужно для индекса столбца в Excel при записи) $numberCellOfString ++; } //Конец разбора строки на ячейки //Сдвигаем номер рассматриваемой строки (нужно для индекса строк в Excel при записи) $numberNowString ++; } //Конец разбора таблицы на строки $NumberList ++; $IsTableOnThisPage = stripos($htmlCode, $openTag."table"); }