在Delphi中,我想把excel的数据逐条读入到数据库中去,不过读的时候是按列读的,比如先读出第一列字段的值,再读第二列。而写到数据库时,是按行写的,比如是一条纪录一条纪录读的。请问我怎么写这个循环啊?还有把excel单元格的值,保存到一个变量后,我怎么传递这个变量到insert语句中去了啊?很急啊,各位高手帮我看看把。
解决方案 »
- delphi如何实现一根过圆心的直线在圆圈内每秒绕圈走动的效果!!
- ★★★★★★高手请入★★★★★★对于数据库中存储有大量图片字段的数据表,如何尽量减小数据库的体积呢?access数据库,存储图片用OLE
- 集合型数组如何清空?
- 请问,在DELPHI中如何用ADOConnection来访问带密码的ACCESS数据库?
- 现在的CSDN!
- 我要做一个程序,其中一些功能只允许 Windows 2000 的系统管理员才能运行,该怎么做?
- 请教关于词典的设计问题
- 请问哪里有delphi关于socket的教程,最近想学一学。高手指教。
- 各位高人过来看一看~~~~
- c++语言转换delphi的问题
- 如何过滤非法字符??
- 天下之大,无奇不有!有答就有分
PA = ^TPASN2_NEW;
TPA = record
A: String;
B: String;
end; procedure TForm1.loadExcel(fileName: String);
var FA: PA;
begin
//读Excel文件
ExcelApplication1.Visible[0]:=false;
Excelapplication1.Workbooks.Open(OpenDialog1.FileName,null,null,null,null,null,null,null,null,null,null,null,null,0);
WorkBk := ExcelApplication1.WorkBooks.Item[1];
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
WorkSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
X := Excelapplication1.ActiveCell.Row;
Y := Excelapplication1.ActiveCell.Column;
RangeMatrix := Excelapplication1.Range['A1',Excelapplication1.Cells.Item[X,Y]].Value;
//按行进行循环
for iRE:=2 to X-2 do
begin
New(FA); //此处我创建了一个结构体指针用来存取信息
FA^.A := Trim(RangeMatrix[iRE+2,2]);
FA^.B := Trim(RangeMatrix[iRE+2,2]);
//进行数据存入数据库
with Query1 do
begin
Close;
sql.text := 'insert into table1 (a,b) values(:a,:b)';
Parameters.ParamByName('a').value := FA^.A;
Parameters.ParamByName('b').value := FA^.B;
ExecSql;
end;
end;
end;大致的方法就是这样的,我目前就是这么处理的,运行时还可以.
你可以根据你需要的进行调整.目前我分几个部分:
1.加载Excel文件到内存中(因为加载速度很快,用完就把Excel关了)
2.保存数据(注意要用事务控制,如果出错可以回滚)