Форум: "Начинающим";
Текущий архив: 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