-
Добрый вечер. Столкнулся с 2-мя проблемами при работе с Excel;
1) Это выгрузка в Excel. А именно сначала создание книги, ее форматирование в текст всех ячеек (то бишь чтобы Excel самостоятельно не перевел в формат который ему нравится), а потом заливка из csv-файла уже выгруженных из базы данных. Жирным то что не получается. 2) Вставка в Excel макроса и его выполнение
Направьте кодом на путь истинный, ну или подскажите что почитать
Заранее спасибо за помощь
-
> подскажите что почитать >
Книги.. можно статьи.. коих очень много на Королевстве Делфи
-
> Виталий Панасенко(дом) ну спасибо узнал от Вас много нового
перерыл и рою до сих пор информацию если бы знал где искать не обращался
-
Запиши в макрос, как сам эксель это делает и интерпретируй на свой лад..будет практически один в один
-
> Жирным то что не получается
Потому что Ёхелю, в отличие от тебя, не известно что такое "заливка")
-
> Виталий Панасенко(дом) Макрос будет постоянно меняться, я хочу его из менять в текстовом файле и вставлять Excel , но не знаю как это сделать по поводу заливки for i := 0 to Grid.DataController.DataSet.RecordCount - 1 do begin
for j := 0 to grid.VisibleColumnCount - 1 do begin
S := S + StringReplace(Grid.ViewData.Rows[i].DisplayTexts[j], ';', '', [rfReplaceAll]) + ';'; end;
S := Copy(S, 1, Length(S) - 1);
S := StringReplace(S, #$D, '', [rfReplaceAll]);
S := StringReplace(S, #$A, '', [rfReplaceAll]);
S := StringReplace(S, #9, '', [rfReplaceAll]);
Table.Add(S);
S := '';
FRM_Export.PB.Position := i;
FRM_Export.Label1.Caption :=IntToStr(i) + ' из ' + InttoStr(Grid.DataController.DataSet.RecordCount);
Application.ProcessMessages;
end;
grid.DataController.DataSet.EnableControls;
Path := ExtractFilePath(Application.ExeName);
Table.SaveToFile(Path + 'tmp.csv');
try
FRM_Export.Label1.Caption := 'Форматирование';
Application.ProcessMessages;
XL := CreateOleObject('Excel.Application');
Workbook := XL.WorkBooks.Add;
XL.DisplayAlerts := False;
XL.Visible := False;
XL.cells.select;
XL.selection.NumberFormat:= '@';
Workbook := XL.WorkBooks.Open(Path + 'tmp.csv'); XL.cells.select;
XL.selection.Columns.AutoFit;
for col := 0 to grid.VisibleColumnCount -1 do begin
WorkBook.WorkSheets[1].Cells.item[1,col+1].HorizontalAlignment := -4108;
WorkBook.WorkSheets[1].Cells.item[1,col+1].VerticalAlignment := -4108;
WorkBook.WorkSheets[1].Cells.item[1,col+1].Columns.Interior.Color :=$00FFBD9D;
WorkBook.WorkSheets[1].Cells.item[1,col+1].Borders.LineStyle := 1;
WorkBook.WorkSheets[1].Cells.item[1,col+1].Font.Bold := True;
WorkBook.WorkSheets[1].Cells.item[Grid.DataController.DataSet.RecordCount + 2,col+1].Columns.Interior.Color :=$CDCDC1;
end;
end; Я не прошу вас написать за меня код я просто не знаю как Открытый Excel вставить уже созданный csv файл
-
Решать эту задачу через промежуточный файл (тем паче через csv) - это как к соседу через Антарктиду в гости сходить)
-
< Сергей М. Ваши педложения?
-
> Ваши педложения? или ADORecordSet или вариантный массив, и для того и для другого есть методы прямо у ячейки(/диапазона) в которую нужно вставить (кстати описанные на королевстве, в статье про работу с Excel). а csv или другой файл, это только если его получаешь откуда то, а формировать специально для вставки глупо.
-
> или ADORecordSet или вариантный массив, и для того и для > другого есть методы прямо у ячейки(/диапазона) в которую > нужно вставить (кстати описанные на королевстве, в статье > про работу с Excel). > а csv или другой файл, это только если его получаешь откуда > то, а формировать специально для вставки глупо. >
Вариантый массив не подходит, так как много данных, и вылетает с "OLE Error" Даже пытался вставлять данные поблочно, но это долго (7 миллионов строк и 67 столбцов)
-
я знаю что не влезет на страницу, разбиваю по литам
-
> M@D (06.02.09 18:31) [9]
> 7 миллионов строк
У тебя все ли с головой в порядке ? Ты когда-нть на ёхельный лист внимательно смотрел ли ? Видел ли ты, что последня строка ёхельного листа нумеруется цифирью, не превышающей 66 тысяч ?
-
> и вылетает с "OLE Error" как это там говорится - что то на что то менять только время терять. > ... // тут ругается а тут типа все зашибись? ты бы разобрался в причине, и глядишь это оказались бы те самые "7 миллионов строк и 67 столбцов"...
> не превышающей 66 тысяч ? вроде как в 2007 версии повысили до миллиона, но точно не скажу, не пользовался ни разу.
-
Удалено модератором Примечание: а ты кто?
-
> вроде как в 2007 версии повысили до миллиона, но точно не > скажу, не пользовался ни разу.
да это так, лимон с хвотиком
Ладно, если никто не знает буду искать другие решения...
Спасибо за не помощь
-
> кстати не 66 тонн а 65536
Вот спасибо-то за уточнение ! Век не забуду) И все же - за каким леши СЕМЬ МИЛЛИОНОВ строк пытаться пхать в ёхельный лист ?)
-
> Moron
> M@D
Ну-у-у началась буффонада с переодеваниями))
-
Удалено модератором
-
Чем больше млякаешь - тем больше "конители" тебе и "бухам". "Бухи" и так люди занятые, да еще ты, млякарь, им хлопот добавляешь)
-
ниче не понял =)
|