iSlayter
Новичок
Excel, как xml. Генерим, получаем "кривой файл".
Есть xls шаблон накладной. Сохранил его как xml.
Нашел место где идут ряды с инфой, которые нужно генерить.
На этом месте вырезал контент для дальнейшей забивки его в цикл. На этом месте оставил [ROWSHERE].
После замены этого места офис ругался на некорректную структуру таблицы. Порылся в файлике - нашел место где хранится общее число рядов и ячеек. Обозначил его как [ROWCOUNT].
Далее - генерим инфу для записи, заменяем [ROWSHERE] и [ROWCOUNT] на нашу инфу:
НО! При открытии сгенеренного т.о. файла Excel опять ругается!
Пробовал и с \n между строками и без него.
Пробовал, потому что в результате научно технического втыка было установлено - если открыть файл через блокнот и ручками поставить переносы строк - о чудо! он открывается!
И ещё проблема - если пытаться вставить в Excel что-то русское - оно не вставляется. Там либо точки либо просто пустота.
iconv($from, $to, string) как понимаю надо сделать. Вопрос какое значение должна принять $to?
Спасибо за внимание.
-~{}~ 23.07.07 15:54:
да, вот сами файлы:
http://mudak.cn/journal/docs/with_error.xls
и
http://mudak.cn/journal/docs/without_error.xls
Есть xls шаблон накладной. Сохранил его как xml.
Нашел место где идут ряды с инфой, которые нужно генерить.
На этом месте вырезал контент для дальнейшей забивки его в цикл. На этом месте оставил [ROWSHERE].
После замены этого места офис ругался на некорректную структуру таблицы. Порылся в файлике - нашел место где хранится общее число рядов и ячеек. Обозначил его как [ROWCOUNT].
Далее - генерим инфу для записи, заменяем [ROWSHERE] и [ROWCOUNT] на нашу инфу:
PHP:
foreach ($_POST['place'] as $key => $value) {
$coordinates = explode('.',$value);
$x = $coordinates[0];
$y = $coordinates[1];
$i++;
$rowshere .= "<Row ss:AutoFitHeight=\"0\" ss:Height=\"38.25\" ss:StyleID=\"s96\">\n
<Cell ss:Index=\"2\" ss:StyleID=\"s92\"><Data ss:Type=\"String\">' . $i . '</Data></Cell>\n
<Cell ss:MergeAcross=\"1\" ss:StyleID=\"m21540904\"><Data ss:Type=\"String\">Бла_бла_бла</Data></Cell>\n
<Cell ss:StyleID=\"s103\"><Data ss:Type=\"String\">шт</Data></Cell>\n
<Cell ss:StyleID=\"s103\"><Data ss:Type=\"String\">1</Data></Cell>\n
<Cell ss:StyleID=\"s103\"><Data ss:Type=\"String\">500</Data></Cell>\n
<Cell ss:StyleID=\"s103\"><Data ss:Type=\"String\">500</Data></Cell>\n
</Row>\n";
}
$output = str_replace( "[ROWCOUNT]",31+$countofrows, $output );
$output = str_replace( "[ROWSHERE]",$rowshere, $output);
Пробовал и с \n между строками и без него.
Пробовал, потому что в результате научно технического втыка было установлено - если открыть файл через блокнот и ручками поставить переносы строк - о чудо! он открывается!
И ещё проблема - если пытаться вставить в Excel что-то русское - оно не вставляется. Там либо точки либо просто пустота.
iconv($from, $to, string) как понимаю надо сделать. Вопрос какое значение должна принять $to?
Спасибо за внимание.
-~{}~ 23.07.07 15:54:
да, вот сами файлы:
http://mudak.cn/journal/docs/with_error.xls
и
http://mudak.cn/journal/docs/without_error.xls