用ADO控件操作Excel的.xls文件的最详细的教程(2013.11.29首发)
2013-11-29 08:57
926 查看
用ADO控件操作Excel的.xls文件
用ADO操作Excel的.xls文件有速度快,可以在一定条件下突破Excel的总行数限制(超过这个行数限制在Excel中操作可能会有问题),操作具有真正的隐秘性等优点。
而用OLE操作Excel文件有两个弊端,一是操作的效率较低占用资源较大,二是需要安装Office中的Excel或WPS Office的WPS表格。
但用ADO如数据库一般操作Excel的.xls文件使用的人较少,为此我将ADO操作Excel的.xls文件的方法及注意事项整理如下,供广大初学者研究和使用:
第一步:准备Excel文件:
1)新建一个Excel文件;
2)在文件的一个工作簿的第一行逐个输入列名称;
3)用鼠标选取第一行包含列名称的单元格;注意:选中有列名称的单元格就可以了,否则运行时输入数据出错,并且只能操作和显示选中行数减一的行;
4)在菜单“插入->名称->定义”中弹出的对话框中输入表名称;
5)保存Excel文件的修改。
说明:第一行(列名称所在的行)可以选择隐藏,不影响使用。
第二步:设置ADOTable控件(ADOQuery等亦可,此处仅以ADOTable为例)的连接串:
(1)添加一个ADOTable控件至窗体上,单击ConnectionString属性右方的对话框按钮,打开数据库连接对话框;
(2)单击Use Connection String单选按钮中的Build..按钮;
(3)选取Microsoft Jet 4.0 OLE DB Provider驱动程序(该驱动除了可以连接*.mdb的Access文件外,还可以连接*.xls的Excel文件);
(4)单击[数据连接属性]对话框里[提供者]选项卡的[下一步]按钮,在里面选择要连接的Excel文件;
(5)单击[数据连接属性]对话框里的[所有]选项卡标签,来修改里面的Extended Properties:
双击Extend Properties属性,在文本框里输入“Excel 8.0”,这代表我们要利用Microsoft Jet 4.0 OLE DB Provider驱动程序来连接Excel文件而不是Access文件!
(6)把ADOTable组件的TableName属性选定为要打开的工作表;注意:带“$”的不是真正的表名称,不要选,否则出错。
注:用ADOQuery等控件可以这样打开:SELECT * FROM [书籍销售$]; // 要加$?
第三步:在.cpp文件里添加如下代码:
// 连接例子①:-----------------------------------------------------------------
// 完整例子②:将SQLServer中的数据写入Excel数据库:---------------------------
⑴ 在.cpp文件中添加:-------------------------
⑵ 在.h文件中添加:---------------------------
用ADO操作Excel的.xls文件有速度快,可以在一定条件下突破Excel的总行数限制(超过这个行数限制在Excel中操作可能会有问题),操作具有真正的隐秘性等优点。
而用OLE操作Excel文件有两个弊端,一是操作的效率较低占用资源较大,二是需要安装Office中的Excel或WPS Office的WPS表格。
但用ADO如数据库一般操作Excel的.xls文件使用的人较少,为此我将ADO操作Excel的.xls文件的方法及注意事项整理如下,供广大初学者研究和使用:
第一步:准备Excel文件:
1)新建一个Excel文件;
2)在文件的一个工作簿的第一行逐个输入列名称;
3)用鼠标选取第一行包含列名称的单元格;注意:选中有列名称的单元格就可以了,否则运行时输入数据出错,并且只能操作和显示选中行数减一的行;
4)在菜单“插入->名称->定义”中弹出的对话框中输入表名称;
5)保存Excel文件的修改。
说明:第一行(列名称所在的行)可以选择隐藏,不影响使用。
第二步:设置ADOTable控件(ADOQuery等亦可,此处仅以ADOTable为例)的连接串:
(1)添加一个ADOTable控件至窗体上,单击ConnectionString属性右方的对话框按钮,打开数据库连接对话框;
(2)单击Use Connection String单选按钮中的Build..按钮;
(3)选取Microsoft Jet 4.0 OLE DB Provider驱动程序(该驱动除了可以连接*.mdb的Access文件外,还可以连接*.xls的Excel文件);
(4)单击[数据连接属性]对话框里[提供者]选项卡的[下一步]按钮,在里面选择要连接的Excel文件;
(5)单击[数据连接属性]对话框里的[所有]选项卡标签,来修改里面的Extended Properties:
双击Extend Properties属性,在文本框里输入“Excel 8.0”,这代表我们要利用Microsoft Jet 4.0 OLE DB Provider驱动程序来连接Excel文件而不是Access文件!
(6)把ADOTable组件的TableName属性选定为要打开的工作表;注意:带“$”的不是真正的表名称,不要选,否则出错。
注:用ADOQuery等控件可以这样打开:SELECT * FROM [书籍销售$]; // 要加$?
第三步:在.cpp文件里添加如下代码:
TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { //ADOTable1->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BOOK.xls;Extended Properties=Excel 8.0;Persist Security Info=False"; // 典型连接串 ADOTable1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { ADOTable1->Close(); }
// 连接例子①:-----------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) { ADOQuery1->Close(); ADOQuery1->SQL->Clear(); // 用于清空ADOQuery ADOQuery1->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=工作表.xls;Extended Properties=Excel 8.0;Persist Security Info=False"; //ADOQuery1->Connection=ADOConnection1; //ADOQuery1->Filtered=false; // 关闭过滤 ADOQuery1->SQL->Add("SELECT * FROM [编码];"); ADOQuery1->Open(); //ADOQuery1->ExecSQL(); // 写入删除或修改数据时使用 }
// 完整例子②:将SQLServer中的数据写入Excel数据库:---------------------------
⑴ 在.cpp文件中添加:-------------------------
extern PACKAGE TForm1 *Form1; extern PACKAGE AnsiString iADOcs1; // 主要数据库的连接串 extern PACKAGE AnsiString iADOcs2; // 主要数据库的连接串 //--------------------------------------------------------------------------- #endif
⑵ 在.h文件中添加:---------------------------
#pragma resource "*.dfm" TForm1 *Form1; AnsiString iADOcs1; // 主要数据库的连接串 AnsiString iADOcs2; // 主要数据库的连接串 //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { iADOcs1="Provider=SQLOLEDB.1;Password=qazxsw21;Persist Security Info=True;User ID=pdm;Initial Catalog=pdm;Data Source=wdserver3"; iADOcs2="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=工作表.xls;Extended Properties=Excel 8.0;Persist Security Info=False"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { ADOQuery1->Close(); ADOQuery1->SQL->Clear(); // 用于清空ADOQuery ADOQuery1->ConnectionString=iADOcs1; ADOQuery1->SQL->Add("SELECT oid,name,doctype,createtime,creater FROM pdmDocmaster ORDER BY createtime DESC;"); ADOQuery1->Open(); ADOQuery1->First(); ADOCommand1->ConnectionString=iADOcs2; // 连接字符串 AnsiString iT1,iT2,iT3,iT4,iT5; ProgressBar1->Max=ADOQuery1->RecordCount; // 设置最大值 ProgressBar1->Position=0; // 设置进度条进度 ProgressBar1->Left=(Form1->Width-ProgressBar1->Width)/2; // 设置进度条的横向位置在中间 ProgressBar1->Visible=true; // 显示进度条 while(!ADOQuery1->Eof)//如果不为空 { iT1=ADOQuery1->FieldByName("oid")->AsString.Trim(); iT2=ADOQuery1->FieldByName("name")->AsString.Trim(); iT3=ADOQuery1->FieldByName("doctype")->AsString.Trim(); iT4=ADOQuery1->FieldByName("createtime")->AsString.Trim(); iT5=ADOQuery1->FieldByName("creater")->AsString.Trim(); ADOCommand1->CommandText="INSERT INTO 编码(编码,名称,类别,时间,人员)VALUES('"+iT1+"','"+iT2+"','"+iT3+"','"+iT4+"','"+iT5+"');"; ADOCommand1->Execute(); ADOQuery1->Next(); ProgressBar1->Position++; // 进度条进度增加 } ProgressBar1->Visible=false; // 隐藏进度条 }
相关文章推荐
- Excel格式类型文件操作的.NET 控件Spire.XLS
- 有Excel格式类型文件进行操作控件Spire.XLS for .NET
- C# .Net :Excel NPOI导入导出操作教程之将Excel文件读取并写到数据库表,示例分享
- 入门级Hadoop集群搭建详细教程(二):Linux常用命令之文件操作
- 用Python的pandas框架操作Excel文件中的数据教程
- 使用phpExcelReader操作excel提示The filename *.xls is not readable的详细解决方法
- [例题]VB操作Excel (1)[用VB创建一个xls文件][并向里面写入一个数据]
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
- c# .Net :Excel NPOI导入导出操作教程之数据库表信息数据导出到一个Excel文件并写到磁盘示例分享
- C++ 文件操作 详细教程
- node.js零基础详细教程(2):模块化、fs文件操作模块、http创建服务模块
- 用ADO控件读EXCEL或DBF文件
- Excel工具类,本类提供JAVA中对XLS文件的简单操作(转载过来稍作了修改)。
- php中使用PHPExcel操作excel(xls)文件
- NPOI 1.2教程 – 3.1 基于.xls模板生成Excel文件
- 用ADO控件读EXCEL或DBF文件
- Ado.Net操作Excel文件数据常见问题及解决
- C# 操作 Excel(.xls和.xlsx)文件
- excel 2003 ,wps office 2007,excel 2007 xls xlsx文件操作效率比较
- 创建和管理Excel文件的控件Spire.XLS for .NET