#php #com #export #excel-2007
#php #com #экспорт #excel-2007
Вопрос:
Я использую xampp / wamp в Windows и хочу преобразовать книгу Excel в HTML-файл.
Я не задаю этот вопрос сразу, я провел много исследований и, наконец, смог добраться до точки и застрял здесь.
Я использую библиотеку COM php для открытия Excel, затем читаю книгу и пытаюсь сохранить ее как html, однако у меня возникают проблемы с этим
Это мой код
$excel = new COM("Excel.Application",NULL,CP_UTF8) or die("Unable to instantiate Excel");
$excel->Application->Visible=1;
$excel->DisplayAlerts="False";
$workBook=$excel->Workbooks->Open(realpath("./example-03e-02.xlsx"));
$workBook->PublishObjects->Add(xlSourceSheet, "c:\temp\x.htm", "Sheet1", "", xlHtmlStatic, "test_27778", "");
$workBook->Publish (True);
$workBook->AutoRepublish(0);
$excel->Workbooks->Close();
$excel->Application->Quit();
$excel = null;
$workBook=null;
Метод PUlishObjects продолжает сообщать мне, что xlSourceSheet не определен, я пытался передать его в виде строки «xlSourceSheet», но он продолжает указывать несоответствие типа параметра в одном или другом. В приведенном выше случае указано несоответствие типа параметра 6;
если я удалю необязательные параметры, такие как divid и title (последние 2), это покажет несоответствие типов в исходном диапазоне, которое, очевидно, пустое, поскольку я экспортирую лист.
Любой орган может пролить некоторый свет на это и сказать мне, что я делаю неправильно.
Спасибо
Ответ №1:
В любом случае, мне удалось решить проблему, немного покопавшись в руководстве разработчика Excel.
Мне просто пришлось заменить xlSourceSheet и xlHtmlstatic их соответствующими номерами, которые я нашел в документах. xlSourceSheet равен 1, а xlHtmlStatic равен 0.
Если кто-нибудь ищет эти коды, вот они
xlSourceAutoFilter 3 Диапазон автофильтра xlSourcePivotTable 6 Отчет сводной таблицы xlSourcePrintArea 2 Диапазон ячеек, выбранных для печати xlSourceQuery 7 Таблица запросов (диапазон внешних данных) xlSourceRange 4 Диапазон ячеек xlSourceSheet 1 Весь рабочий лист xlSourceWorkbook 0 Рабочая тетрадь
xlHtmlCalc 1 Используйте компонент электронной таблицы. Не рекомендуется в Excel 2007. xlHtmlChart 3 Используйте компонент диаграммы. Не рекомендуется в Excel 2007. xlHtmlList 2 Используйте компонент сводной таблицы. Не рекомендуется в Excel 2007. xlHtmlStatic 0 Используйте статический (неинтерактивный) HTML только для просмотра.
$object=$excel->ActiveWorkbook->PublishObjects->Add(1,"c:\temp\x.htm","Sheet1",0)->Publish(1);
Спасибо cweiske 🙂