读书人

读取Execl的2个有关问题

发布时间: 2012-02-24 16:30:38 作者: rapoo

读取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


[解决办法]
这个问题也碰到过,好象无办法,除非微软的人出来讲清楚

读书人网 >.NET

热点推荐