if(ExcelApp.cells[i,j].value <>'') then我这样写,报类型错误,我在excel里将字段设置格式为文本或者在程序里通过下面语句设置 也不行ExcelApp.ActiveWorkbook.ActiveSheet.Columns[j].NumberFormatLocal:='@';这样设置后,单元格的内容类型不是字符串吗??
解决方案 »
- 请问如何遍历Tmemo组件,取出每行数据,然后保存到数据库里?
- 求scktsrvr.exe改良版
- 关于adoquery计算字段耗时的问题怎么解决
- ★类中前面没有可见性描述的字段的可见性是什么?
- 如何设置子菜单?谢谢!
- 请教dbedit问题
- 一个关于ADOQuery的简单问题,在线等侯大虾!!!
- 狀態欄中的工具提示(hint)怎么實現﹖(在線)
- 谁知道installshield professional 6.22的password?谢谢!
- DELPHI6的新特性
- 如何截取Windows窗体标题双击事件?????????????
- ▲▲▲有没有这样的控件,象Label样式在下面有一条横线,在横线上可以输入东西的控件,有请告诉我是什么控件???▲▲▲
至于你的问题可以用UsedRange来解决,可参见我的代码
var
AExcel: Variant;
i, j: Integer;
begin
AExcel := CreateOleObject('Excel.Application');
AExcel.WorkBooks.Open('D:\123.xls');
AExcel.Visible := False;
for i := 0 to StringGrid1.ColCount - 1 do
StringGrid1.Cols[i].Clear;
StringGrid1.ColCount := AExcel.ActiveSheet.UsedRange.Columns.Count;
StringGrid1.RowCount := AExcel.ActiveSheet.UsedRange.Rows.Count;
if StringGrid1.ColCount > 0 then
StringGrid1.ColWidths[0] := 16;
for i := 1 to AExcel.ActiveSheet.UsedRange.Rows.Count do
begin
StringGrid1.Cells[0, i] := IntToStr(i);
for j := 1 to AExcel.ActiveSheet.UsedRange.Columns.Count do
StringGrid1.Cells[j, i] := AExcel.Cells[i, j].Value;
end; AExcel.ActiveWorkBook.Close;
AExcel.Quit;
end;