Конференция "Базы" » Excel + Delphi [D7, MSSQL]
 
  • M@D (05.02.09 18:41) [0]
    Добрый вечер.
    Столкнулся с 2-мя проблемами при работе с Excel;

    1) Это выгрузка в Excel.
    А именно сначала создание книги, ее форматирование в текст всех ячеек (то бишь чтобы Excel самостоятельно не перевел в формат который ему нравится), а потом заливка из csv-файла уже выгруженных из базы данных.  Жирным то что не получается.
    2) Вставка в Excel макроса и его выполнение

    Направьте кодом на путь истинный, ну или подскажите что почитать

    Заранее спасибо за помощь

  • > подскажите что почитать
    >

    Книги.. можно  статьи.. коих очень много на Королевстве Делфи
  • M@D (05.02.09 21:49) [2]
    > Виталий Панасенко(дом)
    ну спасибо узнал от Вас много нового

    перерыл и рою до сих пор информацию
    если бы знал где искать не обращался
  • Запиши в макрос, как сам эксель это делает и интерпретируй на свой лад..будет практически один в один
  • Сергей М. © (06.02.09 10:47) [4]

    > Жирным то что не получается


    Потому что Ёхелю, в отличие от тебя, не известно что такое "заливка")
  • M@D (06.02.09 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 файл
  • Сергей М. © (06.02.09 17:18) [6]
    Решать эту задачу через промежуточный файл (тем паче через csv) - это как к соседу через Антарктиду в гости сходить)
  • M@D (06.02.09 17:23) [7]
    < Сергей М.
    Ваши педложения?
  • sniknik © (06.02.09 18:12) [8]
    > Ваши педложения?
    или ADORecordSet или вариантный массив, и для того и для другого есть методы прямо у ячейки(/диапазона) в которую нужно вставить (кстати описанные на королевстве, в статье про работу с Excel).
    а csv или другой файл, это только если его получаешь откуда то, а формировать специально для вставки глупо.
  • M@D (06.02.09 18:31) [9]

    > или ADORecordSet или вариантный массив, и для того и для
    > другого есть методы прямо у ячейки(/диапазона) в которую
    > нужно вставить (кстати описанные на королевстве, в статье
    > про работу с Excel).
    > а csv или другой файл, это только если его получаешь откуда
    > то, а формировать специально для вставки глупо.
    >


    Вариантый массив не подходит, так как много данных, и вылетает с "OLE Error"
    Даже пытался вставлять данные поблочно, но это долго (7 миллионов строк и 67 столбцов)
  • M@D (06.02.09 18:32) [10]
    я знаю что не влезет на страницу, разбиваю по литам
  • Сергей М. © (06.02.09 20:36) [11]

    > M@D   (06.02.09 18:31) [9]


    > 7 миллионов строк


    У тебя все ли с головой в порядке ?
    Ты когда-нть на ёхельный лист внимательно смотрел ли ?
    Видел ли ты, что последня строка ёхельного листа нумеруется цифирью, не превышающей 66 тысяч ?
  • sniknik © (06.02.09 20:48) [12]
    > и вылетает с "OLE Error"
    как это там говорится - что то на что то менять только время терять.
    > ... // тут ругается
    а тут типа все зашибись? ты бы разобрался в причине, и глядишь это оказались бы те самые "7 миллионов строк и 67 столбцов"...

    > не превышающей 66 тысяч ?
    вроде как в 2007 версии повысили до миллиона, но точно не скажу, не пользовался ни разу.
  • Moron (06.02.09 20:49) [13]
    Удалено модератором
    Примечание: а ты кто?
  • M@D (06.02.09 20:54) [14]

    > вроде как в 2007 версии повысили до миллиона, но точно не
    > скажу, не пользовался ни разу.

    да это так, лимон с хвотиком

    Ладно, если никто не знает буду искать другие решения...

    Спасибо за не помощь
  • Сергей М. © (06.02.09 20:55) [15]

    > кстати не 66 тонн а 65536


    Вот спасибо-то за уточнение !
    Век не забуду)
    И все же - за каким леши СЕМЬ МИЛЛИОНОВ строк пытаться пхать в ёхельный лист ?)
  • Сергей М. © (06.02.09 20:56) [16]

    > Moron


    > M@D


    Ну-у-у началась буффонада с переодеваниями))
  • M@D (06.02.09 21:03) [17]
    Удалено модератором
  • Сергей М. © (06.02.09 21:07) [18]
    Чем больше млякаешь - тем больше "конители" тебе и "бухам".
    "Бухи" и так люди занятые, да еще ты, млякарь, им хлопот добавляешь)
  • M@D (06.02.09 21:08) [19]
    ниче не понял =)
  • имя (06.02.09 21:10) [20]
    Удалено модератором
    Примечание: падонковщина
  • sniknik © (06.02.09 21:11) [21]
    > Ладно, если никто не знает буду искать другие решения...
    открой файл непосредственно из Excel-я, программы в смысле, сформируй сколько ты там формируеш блоков, после запусти программу ручками и открой все. ???
 
Конференция "Базы" » Excel + Delphi [D7, MSSQL]
Есть новые Нет новых   [134477   +43][b:0][p:0.002]