30.10.2006, 10:42
|
#1
|
Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Вывод в Excel в формате XML и ширина колонок
В коллективном эксперименте по экспорту данных в Excel на скорость был упомянут метод экспорта данных в XML. Замечательная идея: не нужен сам Excel для формирования книги, работает быстро, можно сразу задать форматирование, нарисовать рамочки, задать нужный тип ячеек (текст, число, дата) и т.д... Но я лично столкнулся с одной неприятной особенностью, по крайней мере, в Excel 2003 SP2 (v11.8012.6568): если выводить данные в файл и потом открывать его в ExcelX++: str filename;
str buf;
TextBuffer tb;
ComExcelDocument_Ru excel;
// ...
tb.setText(buf);
tb.toFile(filename);
excel.open(filename, false); то все замечательно, форматирование получается полностью такое, как написано. Если же обходиться без промежуточного файла и выводить данные в RangeX++: #define.xlRangeValueXMLSpreadsheet(0x0000000B)
str buf;
int cnLines;
COM sheet;
COM range;
// ...
range = sheet.range("A1:G" + int2str(cnLines));
range.value(#xlRangeValueXMLSpreadsheet, buf); то форматирование работает полностью, за исключением того, что не устанавливается ширина колонок в соответствии с тем, что написано в XML-данных
PHP код:
#define.LF ('\n')
str b;
;
b = @'<Table ss:ExpandedColumnCount="7" x:FullColumns="1" x:FullRows="1" ss:StyleID="s01">' + #LF +
@' <Column ss:Width="27.75"/>' + #LF +
@' <Column ss:Width="37.5" ss:Span="1"/>' + #LF +
@' <Column ss:Width="300" ss:Index="4"/>' + #LF +
@' <Column ss:Width="67.5"/>' + #LF +
@' <Column ss:Width="45" ss:Span="1"/>' + #LF;
Кто-нибудь сталкивался с таким? Очень уж не хочется плодить кучу временных файлов... Может, я что-то в тэгах Table не так указываю? Не ставить же ширину колонок "вручную" через COM
|
|