Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Вниз

Экспорт таблицы из StringGrid в Excel   Найти похожие ветки 

 
Darvin ©   (2007-05-24 16:22) [0]

Здравствуйте.
Может этот вопрос уже много раз обсуждался, но все-таки, как выполнить подобный экспорт? Поделитесь информацией или ссылочкой.


 
umbra ©   (2007-05-24 16:33) [1]

Создаете двумерный вариантный массив (VarArrayCreate), заполняете его значениями ячеек стринггрида, а в эксель всталяете так:

myrange.Value := myvararray


 
Darvin ©   (2007-05-24 16:35) [2]

>umbra ©   (24.05.07 16:33) [1]
А MyRange в Вашем примере - это что такое?


 
umbra ©   (2007-05-24 16:43) [3]

это диапазон ячеек на листе экселя, такого же размера, как массив


 
Darvin ©   (2007-05-24 17:07) [4]

Накопал такой код. Вроде, работает

function RefToCell(ARow, ACol: Integer): string;
begin
 Result := Chr(Ord("A") + ACol - 1) + IntToStr(ARow);
end;

function SaveAsExcelFile(AGrid: TStringGrid; ASheetName, AFileName: string): Boolean;
const
 xlWBATWorksheet = -4167;
var
 Row, Col: Integer;
 GridPrevFile: string;
 XLApp, Sheet, Data: OLEVariant;
 i, j: Integer;

begin
 // Prepare Data
 Data := VarArrayCreate([1, AGrid.RowCount, 1, AGrid.ColCount], varVariant);
 for i := 0 to AGrid.ColCount - 1 do
   for j := 0 to AGrid.RowCount - 1 do
     Data[j + 1, i + 1] := AGrid.Cells[i, j];

 // Create Excel-OLE Object
 Result := False;
 XLApp := CreateOleObject("Excel.Application");
 try
   // Hide Excel
   XLApp.Visible := False;
   // Add new Workbook
   XLApp.Workbooks.Add(xlWBatWorkSheet);
   Sheet := XLApp.Workbooks[1].WorkSheets[1];
   Sheet.Name := ASheetName;
   // Fill up the sheet
   Sheet.Range[RefToCell(1, 1), RefToCell(AGrid.RowCount,
   AGrid.ColCount)].Value := Data;
   // Save Excel Worksheet
   try
     XLApp.Workbooks[1].SaveAs(AFileName);
     Result := True;
   except
     // Error ?
   end;
 finally
   // Quit Excel
   if not VarIsEmpty(XLApp) then
   begin
     XLApp.DisplayAlerts := False;
     XLApp.Quit;
     XLAPP := Unassigned;
     Sheet := Unassigned;
   end;
 end;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.042 c
2-1180072948
ыавпып
2007-05-25 10:02
2007.06.17
SQL-запросы


15-1179590542
homm
2007-05-19 20:02
2007.06.17
DMClient глюки


2-1180337866
Rimd
2007-05-28 11:37
2007.06.17
События


1-1177001980
Angakok
2007-04-19 20:59
2007.06.17
Непонятная особенность в работе кода


2-1179988065
Marat
2007-05-24 10:27
2007.06.17
Проблема с запросом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский