Delphi XE10。我需要從Excel工作表中逐行讀取(製表符分隔)字符串。當您使用'選擇一行 - 複製 - 粘貼到記事本'時會得到什麼。工作表包含各種格式的字符串,數字和日期。 什麼工作是這樣的:獲取excel行作爲TXT字符串
function TexcelSource.nextRow: string;
var k : integer;
begin
result:=sheet.cells.items[currentRow,1].text;
for k:=2 to maxCol do
result:=result+tab+sheet.cells.items[currentRow,k].text;
inc(currentRow)
end;
,其中板材是引用到Excel工作表(VAR變):
XLApp:=createOLEobject('excel.application');
XLApp.Workbooks.open(filename) ;
Sheet:=XLApp.WorkSheets[1] ;
MaxRow:=Sheet.Usedrange.EntireRow.count ;
MaxCol:=sheet.Usedrange.EntireColumn.count;
然而,這是不可接受的慢。我試圖導入整個工作表中的一階段的陣列和陣列讀取:
sheetData:=Sheet.UsedRange.Value;
這是速度不夠快,但我不能讓所有sheetData [行,列]作爲一個字符串值。它返回帶有字符串值的單元格,但在具有整數值的單元格處停止,錯誤爲'無法將類型變體(UnicodeString)轉換爲類型(Double)'。 (該元素的VarType似乎是vtPointer - 我不明白;我也不明白這個錯誤。)
我也試過通過Delphi剪貼板複製和粘貼。有一段時間,然後剪貼板變得不可用。無論如何,這不是我喜歡的一個操作系統的方法。
我很樂意提供有關如何以可接受的性能讀取工作表行的建議。
哪個Excel版本? – MartynA
有沒有這樣的事情,XE10,FWIW –