PHP и Excel: обзор разработок

Используете ли Вы генерацию XLS из PHP?

  • Да, уже давно

    Голосов: 6 27,3%
  • Только когда требуется

    Голосов: 1 4,5%
  • Нет, предпочитаю csv,txt

    Голосов: 10 45,5%
  • Нет

    Голосов: 5 22,7%

  • Всего проголосовало
    22
  • Опрос закрыт .

slach

Новичок
Ну кое какие разработки в этом направлении есть =)
Писать в Excel таки можно...
читать ? увы... только через COM объекты

http://www.phpclasses.org/browse.html/package/767.html
Class for generating Excel files, based on John McNamara's
Spreadsheet::WriteExcel from CPAN.
It supports all the basic values for cells.
It doesn't support URLs, images (working on it) and charts. It has very
basic support for formulas.
 

Alien

Новичок
>Если в поле может быть любая комбинация букв/кавычек/слеш-бекслеш то ...

Поправлюсь - в элементарных случаях, прокатывает.

>читать ? увы... только через COM объекты

Мы все знаем что COM - это в виндах. А php то крутится в основном на юникс - машинках.
 

bsv

Guest
Если и будет чтение Екселя, то стоить скорей всего будет как PDFLib :(
 

Land

Guest
Автор оригинала: Яро
ссылку?
http://soft.greenline.by/products/abcparser/

2All: все хорошо, есть винды, написал класс для COM. только вот никак не получается процесс убить после отработки :(
мож кто решал такую проблему.
PS: примеры из php_manual_smple_9 ни к чему не привели :(
 

Яро

бард-скальд
все хорошо, есть винды, написал класс для COM. только вот никак не получается процесс убить после отработки
нееее, мне с виндами неинтересно... без COM вот бы...
 

maxik0

Guest
Так то, на что ссылка приведена, работает без СОМ
 

goodwarlock

Guest
Нафиг COM? Есть перловая библиотека, пишется простейшая программа, преобразующая xls в CSV или обратно. Теперь, если нужно, пропускаем через нее данные.
 

Land

Guest
Автор оригинала: Geol
Решал. Покажи как именно убиваешь.
Пробовал по-разному, результат не дало, остановился вот:
function Destroy(){
$this->ex->Application->ActiveWorkbook->Close(False);
$this->ex->Workbooks->Close();
$this->ex->Quit();
$this->ex->Release();
$this->wkb->Release();
$this->ex = null;
$this->wkb = null;
}
---
$this->ex это com obj:

$this->ex = new COM("Excel.sheet") or Die ("<B>ERROR</B><BR>\n myExcel: <B>Did not connect.</B><BR>\n");

$this->wkb это вот что:

$this->wkb = $this->ex->application->Workbooks->Open($book) or Die ("<B>ERROR</B><BR>\n myExcel: <B>Did not open book.</B><BR>\n");
 

Geol

Пациент
Ну вроде этих дествий вполне достаточно (даже явный избыток
$this->ex->Workbooks->Close();
$this->ex->Quit();
$this->ex->Release();
$this->ex = null; и всё)
Дело скорей всего в том, какие действия ты с объектом происводишь. Если неосторожно размножить (add() применить к существующему объекту например, а потом его SaveAs() под другим именем) вытряхнуть из памяти это чудо можно только по трем кнопкам
 

Land

Guest
Что-то не выходит :(

(PHP 4.2.3/WinXP)
Application name:Microsoft Excel
Loaded version: 10.0

Вот пример:
PHP:
$workbook = "e:\Program Files\Microsoft office\Office10\Samples\SOLVSAMP.XLS";
$sheet = "Quick Tour";

#Instantiate the spreadsheet component.
   $ex = new COM("Excel.sheet") or Die ("Did not connect");
   $wkb = $ex->application->Workbooks->Open($workbook) or Die ("Did not open");
$ex->Application->Workbooks->Close();
$ex->Application->Quit();
$ex->Release();
$ex = null;
 

Geol

Пациент
Ну во первых так корректней:

$ex = new COM("excel.application") or Die ("Did not connect");
$wkb = $ex->Workbooks->Open($workbook);

А во вторых пиши мне лечше на мыло, ну или виндозный форум, а то тут это явный офф
 
Сверху