Текущий архив: 2010.01.31;
Скачать: CL | DM;
Вниз
Excel + Delphi Найти похожие ветки
← →
M@D (2009-02-05 18:41) [0]Добрый вечер.
Столкнулся с 2-мя проблемами при работе с Excel;
1) Это выгрузка в Excel.
А именно сначала создание книги, ее форматирование в текст всех ячеек (то бишь чтобы Excel самостоятельно не перевел в формат который ему нравится), а потом заливка из csv-файла уже выгруженных из базы данных. Жирным то что не получается.
2) Вставка в Excel макроса и его выполнение
Направьте кодом на путь истинный, ну или подскажите что почитать
Заранее спасибо за помощь
← →
Виталий Панасенко(дом) (2009-02-05 19:38) [1]
> подскажите что почитать
>
Книги.. можно статьи.. коих очень много на Королевстве Делфи
← →
M@D (2009-02-05 21:49) [2]> Виталий Панасенко(дом)
ну спасибо узнал от Вас много нового
перерыл и рою до сих пор информацию
если бы знал где искать не обращался
← →
Виталий Панасенко(дом) (2009-02-05 22:46) [3]Запиши в макрос, как сам эксель это делает и интерпретируй на свой лад..будет практически один в один
← →
Сергей М. © (2009-02-06 10:47) [4]
> Жирным то что не получается
Потому что Ёхелю, в отличие от тебя, не известно что такое "заливка")
← →
M@D (2009-02-06 17:10) [5]> Виталий Панасенко(дом)
Макрос будет постоянно меняться, я хочу его из менять в текстовом файле и вставлять 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]) + ";"; // .DataController.DataSet.Fields[j].AsString, ";", "", [rfReplaceAll]); //{DataController.DataSet.FieldsByName().AsString,} ";", "", [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 файл
← →
Сергей М. © (2009-02-06 17:18) [6]Решать эту задачу через промежуточный файл (тем паче через csv) - это как к соседу через Антарктиду в гости сходить)
← →
M@D (2009-02-06 17:23) [7]< Сергей М.
Ваши педложения?
← →
sniknik © (2009-02-06 18:12) [8]> Ваши педложения?
или ADORecordSet или вариантный массив, и для того и для другого есть методы прямо у ячейки(/диапазона) в которую нужно вставить (кстати описанные на королевстве, в статье про работу с Excel).
а csv или другой файл, это только если его получаешь откуда то, а формировать специально для вставки глупо.
← →
M@D (2009-02-06 18:31) [9]
> или ADORecordSet или вариантный массив, и для того и для
> другого есть методы прямо у ячейки(/диапазона) в которую
> нужно вставить (кстати описанные на королевстве, в статье
> про работу с Excel).
> а csv или другой файл, это только если его получаешь откуда
> то, а формировать специально для вставки глупо.
>
Вариантый массив не подходит, так как много данных, и вылетает с "OLE Error"
Даже пытался вставлять данные поблочно, но это долго (7 миллионов строк и 67 столбцов)
← →
M@D (2009-02-06 18:32) [10]я знаю что не влезет на страницу, разбиваю по литам
← →
Сергей М. © (2009-02-06 20:36) [11]
> M@D (06.02.09 18:31) [9]
> 7 миллионов строк
У тебя все ли с головой в порядке ?
Ты когда-нть на ёхельный лист внимательно смотрел ли ?
Видел ли ты, что последня строка ёхельного листа нумеруется цифирью, не превышающей 66 тысяч ?
← →
sniknik © (2009-02-06 20:48) [12]> и вылетает с "OLE Error"
как это там говорится - что то на что то менять только время терять.
> ... // тут ругается
а тут типа все зашибись? ты бы разобрался в причине, и глядишь это оказались бы те самые "7 миллионов строк и 67 столбцов"...
> не превышающей 66 тысяч ?
вроде как в 2007 версии повысили до миллиона, но точно не скажу, не пользовался ни разу.
← →
Moron (2009-02-06 20:49) [13]Удалено модератором
Примечание: а ты кто?
← →
M@D (2009-02-06 20:54) [14]
> вроде как в 2007 версии повысили до миллиона, но точно не
> скажу, не пользовался ни разу.
да это так, лимон с хвотиком
Ладно, если никто не знает буду искать другие решения...
Спасибо за не помощь
← →
Сергей М. © (2009-02-06 20:55) [15]
> кстати не 66 тонн а 65536
Вот спасибо-то за уточнение !
Век не забуду)
И все же - за каким леши СЕМЬ МИЛЛИОНОВ строк пытаться пхать в ёхельный лист ?)
← →
Сергей М. © (2009-02-06 20:56) [16]
> Moron
> M@D
Ну-у-у началась буффонада с переодеваниями))
← →
M@D (2009-02-06 21:03) [17]Удалено модератором
← →
Сергей М. © (2009-02-06 21:07) [18]Чем больше млякаешь - тем больше "конители" тебе и "бухам".
"Бухи" и так люди занятые, да еще ты, млякарь, им хлопот добавляешь)
← →
M@D (2009-02-06 21:08) [19]ниче не понял =)
← →
имя (2009-02-06 21:10) [20]Удалено модератором
Примечание: падонковщина
← →
sniknik © (2009-02-06 21:11) [21]> Ладно, если никто не знает буду искать другие решения...
открой файл непосредственно из Excel-я, программы в смысле, сформируй сколько ты там формируеш блоков, после запусти программу ручками и открой все. ???
Страницы: 1 вся ветка
Текущий архив: 2010.01.31;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.006 c