Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

Экспорт таблицы из 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;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.035 c
2-1179828778
Alex7
2007-05-22 14:12
2007.06.17
Несколько строк текста в одной ячейке StringGrid


2-1180444102
Галинка
2007-05-29 17:08
2007.06.17
Панель инструментов "под кнопкой" панели инструментов.


15-1179590480
Piter
2007-05-19 20:01
2007.06.17
Корзина в The Bat


2-1180326714
Riply
2007-05-28 08:31
2007.06.17
Поучение геометрии флоппи диска.


15-1179837326
vitv
2007-05-22 16:35
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский