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