读取Execl的2个问题
代码是这样的
- Delphi(Pascal) code
function TForm1.LoadExcel(AFileName: String): Boolean;var vExcel: Variant; i, RowCount: integer; instRecord: TInstructRecord; sMessage,sTemp: string;begin vExcel := CreateOleObject('Excel.Application'); //创建应用对象 vExcel.WorkBooks.Open(AFileName); RowCount := vExcel.Worksheets[1].UsedRange.Rows.Count; //读行数 qry1.DisableControls(); for i := 2 to RowCount do begin instRecord.date := trim(vExcel.Worksheets[1].Cells[i, 1].Value); instRecord.name := trim(vExcel.Worksheets[1].Cells[i, 10].Value); instRecord.time := trim(vExcel.Worksheets[1].Cells[i, 11].Value); instRecord.pass := trim(vExcel.Worksheets[1].Cells[i, 19].Value); instRecord.prbl := trim(vExcel.Worksheets[1].Cells[i, 20].Value); end; begin adoqry1.Open; adoqry1.Edit; adoqry1.FieldByName('date').AsString := instRecord.date; adoqry1.FieldByName('name').AsString := instRecord.name; adoqry1.FieldByName('time').AsString := instRecord.time; adoqry1.FieldByName('pass').AsString := instRecord.pass; adoqry1.FieldByName('prbl').AsString := instRecord.prbl; adoqry1.Open; end; adoqry1.EnableControls; vExcel.WorkBooks.Close; vExcel.Quit; vExcel := Unassigned; end;现在有2个问题,第一个就是Execl中同一列有的数据是数字,有的是文本,一部分就读不出来,就算把单元格格式改成一样的也不行,怎么样在尽量不改动execl的情况下把全部数据都读出来.这个问题我在网上发现很多人遇到,可是没有好的解决办法.
比如一列是这样,我全部改成文本格式了: 1234 (读得出)
1234/5321 (读不出)
1453 (读得出)
4234/5345/1341 (读不出)
第二个问题是:在读取完数据,对ADOquery进行赋值的时候,出现错误,提示找不到对应的FIeld ,可我FIeld已经手动添加了,是string类型的,fieldkind为fkInternalCalc
[解决办法]
这个问题也碰到过,好象无办法,除非微软的人出来讲清楚