我正在寻找使用 Delphi 7 中的 Ole 自动化为 Excel 电子表格提取给定范围内每个单元格的文本。
刚才我有一个函数(假设工作簿已经打开)从工作表中选择一个范围并使用 .Value2 函数填充一个 Variant 数组
function GetExcelRange(const AWorkbookIndex: integer; const AWorksheetIndex: integer; const firstCol, lastCol, firstRow, lastRow: integer): Variant;
var
AWorkbook, ARange: OleVariant;
begin
Result := Unassigned;
if not VarIsEmpty(ExcelApp) then
begin
if ExcelApp.Workbooks.Count >= AWorkbookIndex then
begin
AWorkbook := ExcelApp.Workbooks[AWorkbookIndex];
try
if AWorkbook.Worksheets.Count >= AWorksheetIndex then
begin;
ARange := AWorkbook.WorkSheets[AWorksheetIndex].Range[AWorkbook.WorkSheets[AWorksheetIndex].Cells[firstRow, firstCol],
AWorkbook.WorkSheets[AWorksheetIndex].Cells[lastRow, lastCol]];
Result := ARange.Value2;
end;
finally
AWorkbook := Unassigned;
ARange := Unassigned;
end;
end;
end;
end;
我期望的是我可以将行更改为Result := ARange.Text
但它返回一个空对象。
我宁愿在 Ole 对象处于活动状态时不遍历每个单元格,并将整个范围的文本粘贴到一个数组中,就像我在上面所做的那样。