Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.52 MB
Время: 0.012 c
2-1260339079
oleg1963lora
2009-12-09 09:11
2010.01.31
Посоветуйте. Копирование файлов.


4-1227644104
demon
2008-11-25 23:15
2010.01.31
Как очистить listbox?


4-1227649316
KilkennyCat
2008-11-26 00:41
2010.01.31
Как из сервиса получить доступ к реестру пользователя?


15-1258128360
Кто б сомневался
2009-11-13 19:06
2010.01.31
Как скачать файл с помощью батника?


15-1259061915
ocean
2009-11-24 14:25
2010.01.31
Запустить EXE из HTML