![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день
Подскажите пожалуйста. Есть рабочий цикл: Код:
XArr:=VarArrayCreate([1,ZQuery1.FieldCount],varVariant); XL:=CreateOLEObject('Excel.Application'); // Nicaaiea OLE iauaeoa XL.WorkBooks.add; XL.visible:=False; j := 1; ZQuery1.First; while not ZQuery1.Eof do begin i:=1; while i<=ZQuery1.FieldCount do begin XArr[i] := ZQuery1.Fields[i-1].Value; i := i+1; end; XL.Range['A'+IntToStr(j), CHR(64+ZQuery1.FieldCount)+IntToStr(j)].Value := XArr; ZQuery1.Next; j:=j+1; end; в таблице Mysql с которой идет выборка данных 100 столбцов при формирование файла Эксель выкидывает ошибку, в инете порыл - проблема связана с кол-вом столбцов То есть если столбцов от A1- до Z1 то он формируется нормально. Проверял Если больше столбцов... то ошибка. Код:
XL.Range['A'+IntToStr(j), CHR(64+ZQuery1.FieldCount)+IntToStr(j)].Value как вот этот переделать чтобы после Z он двигался дальше АА, АВ MAD: пользуемся тегами, иначе последуют баны. Последний раз редактировалось M.A.D.M.A.N., 16.04.2014 в 10:42. |
#2
|
||||
|
||||
![]() Если память не изменяет, там идёт А, B, С .. Z, AA, AB, AC
Откуда тут цифры прикреплённые к буквам? Вам нужно посчитать деление нацело ваших колонок на 26. Если 0, значит вам укладываетесь в алфавит. Если 1, значит вам нужна первая "дополнительная" буква. Если 2, значит нужна вторая дополнительная буква. Для нумерации букв можно использовать ASСII таблицу: 65 - A, 66 - B ... и так далее. Примерно: Код:
Chr(65 + (ColumnCount div 26) - 1) 65 - 1 можно упростить. Оставил в фрмуле для наглядности ![]() |
#3
|
|||
|
|||
![]() Попробуйте не использовать буквы. Используйте целые числа;
Код:
ex.cells[Y,X]:=s; x,y: integer; / X-номер строки, Y- номер столбца Последний раз редактировалось draginimp, 16.04.2014 в 12:53. |
#4
|
|||
|
|||
![]() Да, числовая индексация решает многие проблемы.
Если диапазон ячеек формировать так: Код:
Ex.Range[Ex.Cells[j, 1], Ex.Cells[j, ZQuery1.FieldCount]].Value := Arr; |