【发布时间】:2017-03-30 11:45:18
【问题描述】:
我有一个 Excel 电子表格,但现在我的问题是我希望能够只读取特定的列,电子表格中的列超过 20,我只需要读取 3 列。
procedure TForm1.sh1(SheetIndex: integer);
Var
Xlapp1,Xlrange, Sheet:Variant ;
MaxRow, MaxCol,X, Y:integer ;
str:string;
arrData:Variant;
begin
try
Str:=trim(form1.OpenDialog1.FileName);
XLApp1 := createoleobject('excel.application');
XLApp1.Workbooks.open(Str) ;
Sheet := XLApp1.WorkSheets[SheetIndex] ;
MaxRow := Sheet.Usedrange.EntireRow.count ;
MaxCol := sheet.Usedrange.EntireColumn.count;
arrData:= Sheet.UsedRange.Value;
stringgrid1.RowCount:=maxRow+1;
StringGrid1.ColCount:=maxCol+1;
for x := 1 to maxCol do
for y := 1 to maxRow do
stringgrid1.Cells[x,y]:=arrData[y, x];
XLApp1.Workbooks.close;
Except
on E : Exception do begin
XLApp1.Workbooks.close;
ShowMessage(E.Message);
end;
end;
end;
【问题讨论】:
-
是什么阻止您阅读您想阅读的栏目?
-
这段代码读取每一行和每一列。你有什么尝试只阅读你需要的 3 列?在大多数任何语言中,这似乎都是一项简单的编程任务……出了什么问题?
-
我在 StringGrid 中加载这些数据,我的挑战是我不想遍历每一列
-
将你要读取的每一列定义为一个范围,一次性转移每个范围。
-
我对你的 q 做了一个小小的修改,这样我就可以删除我之前的反对票,因为我在谷歌上搜索答案时重新发现了它。
标签: excel delphi delphi-xe3