level 5
试试下面的代码跑下呢?
uses //引用单元
// System.Win.ComObj,
//导入excel文件,支持两种格式
procedure TForm1.Button1Click(Sender: TObject);
var
OpenDialog1: TOpenDialog;
ExcelApp: Variant;
expath, str: String;
i, j, ExCountRow, ExCountCol: integer;
begin
OpenDialog1 := TOpenDialog.Create(Application);
with OpenDialog1 do
begin
Title := '选择*.xls打开';
// Filter := 'Excel File(*.xls)|*.xls';
Filter := 'Excel2003格式文件|*.xls|Excel2007格式文件|*.xlsx';
DefaultExt := '*.xls';
end;
if OpenDialog1.Execute then
begin
expath := OpenDialog1.FileName;
OpenDialog1.Free;
OpenDialog1 := nil;
Application.ProcessMessages;
try
Screen.Cursor := crhourglass;
ExcelApp := CreateOleObject('excel.application');
ExcelApp.Visible := False;
ExcelApp.WorkBooks.open(expath);
ExCountRow := 0;
while not(length(ExcelApp.Cells[ExCountRow + 1, 1]) = 0) do
begin
Inc(ExCountRow);
end;
ExCountCol := 0;
while not(length(ExcelApp.Cells[1, ExCountCol + 1]) = 0) do
begin
Inc(ExCountCol);
end;
StringGrid1.RowCount := ExCountRow + 1;
for i := 1 to StringGrid1.RowCount do
begin
for j := 1 to StringGrid1.ColCount do
begin
StringGrid1.Cells[j, i] := ExcelApp.Cells[i + 1, j];
end;
end;
ExcelApp.WorkBooks.close;
ExcelApp.Quit;
Screen.Cursor := crdefault;
finally
ExcelApp.WorkBooks.close;
ExcelApp.Quit;
Screen.Cursor := crdefault;
end;
end;
//
for i := 1 to StringGrid1.RowCount do
StringGrid1.Cells[6, i] := '0';
//
end;
2015年10月24日 07点10分