




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
收集日期:2011-11-07收集人:邓玉龙用ODBC数据库技术存取Excel关键词:OBDC、EXCEL、C+BuilderODBC就是开放式数据库链接标准,不同种类的数据库只需提供各自的ODBC驱动程序就可按相同的命令操纵,微软同样为Excel提供了ODBC驱动程序,我们可在程序中象数据库一样存取Excel表格。定义好ODBC数据源后,实际试验中并没有如想象的那样简单,在控件Table的属性TableName中总是检索不到表名,同样也没有相关的资料可供查阅。通过对Excel的分析,终于发现了问题的关键所在:ODBC的表名并不就是Excel的工作表名(如Sheet1),在Excel表格中必须对要求操作的行列区域定义一个“名称”作为数据库的表名,该区域的首行各列必须是字段名(否则首行数据会当成字段名),可以定义多个表名。具体操作步骤如下:1. 在Excel上定义“表名”运行Excel程序,打开或新建一表格,按下鼠标左键选择一片区域(起始行先填上字段名),再将鼠标位置点到左上角的地址栏,输入一表名如ABC,或者在菜单上选:“插入(I)”“名称(N)”“定义(D)”,再输入表名(若已定义,可在此处删除掉),存盘退出(假定文件名取为C:Book.xls),若嫌字段名行多余,存盘前可隐藏掉。2. 定义ODBC数据源从Windows桌面“我的电脑”进入“控制面板”,双击“32位ODBC”图标,运行“用户DSN”中的“添加(D)”后选“ExcelDriver(*.xls)”,再点“完成”便弹出对话框,在“数据源名(N)”右边填一名称,如:excel01,在“版本(V”上选“Excel97”,点中“选项”取消“只读”,在“选定工作目录”中,选定Excel文件名(本例c:Book1.xls),再点“确定”直至退出。3. 设置Database控件避免登录检查运行C+Builder,在Form1中加上DataAccess的三个控件:Database1、DataSource1、Table1,加入Database1的目的是为了避免打开数据库时出现登录框,为此双击此控件弹出一对话框,在Aliasname中选ODBC数据源名(本例为Excel01),在Name中填上一新的别名(本例取Excel02),再点“Defaults”出现一批参数缺省值,最后取消Options中的两项“Loginprompt”与“Keepinactiveconnect”,点OK退出。4. 设置其它控件属性将Table1的属性DatabaseName选为步骤3中的新别名Excel02,再将另一属性TableName选为步骤1的表名(本例为ABC);将控件DataSource1的属性DataSet选为Table1;双击Form1,在FormCreate事件子程序内加上一句Table1-Open()。5. 查看数据库内容为了直接看到Excel数据,在Form1中再加上DataControls的控件DBGrid1和DBNavigator1,将两者的属性DataSource都选为DataSource1,双击Table1的属性Active将值改为true,等待数秒就可看到DBGrid1中出现数据,最后恢复Tabel1-Active为false。注意:程序编译前,必须将刚打开的表关闭,即:使Table1-Active为false,否则程序运行时报告出错,因为Excel表总是被ODBC以“独占”方式打开。OLE操作Excel(目前最全的资料)(04.2.19更新)用OLE操作Excel(目前最全的资料)(04.2.19更新)本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel中通过录制宏-察看宏代码-转为CB代码而来.本文档不断更新中.欢迎大家关注.要在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp#include Comobj.hppC+ Builder把Excel自动化对象的功能包装在下面的四个Ole Object Class函数中,应用人员可以很方便地进行调用。设置对象属性:voidOlePropertySet(属性名,参数);获得对象属性:VariantOlePropertyGet(属性名,参数);调用对象方法:1) VariantOleFunction(函数名,参数);2) voidOleProcedure(过程名,参数);在程序中可以用宏定义来节省时间:#definePGOlePropertyGet#definePSOlePropertySet#defineFNOleFunction#definePROleProcedure举例:ExcelApp.OlePropertyGet(workbooks).OleFunction(Add);可写为ExcelApp.PG(workbooks).FN(Add);C+ Builder中使用OLE控制Excel2000,必须掌握Excel2000的自动化对象及Microsoft Word Visual Basic帮助文件中的关于Excel的对象、方法和属性。对象是一个Excel元素,属性是对象的一个特性或操作的一个方面,方法是对象可以进行的动作。首先定义以下几个变量:Variant ExcelApp,Workbook1,Sheet1,Range1;1、Excel中常用的对象是:Application,Workbooks,Worksheets等。创建应用对象Variant ExcelApp;ExcelApp = Variant:CreateObject (Excel.Application);或者ExcelApp = CreateOleObject (Excel.Application);创建工作簿对象Variant WorkBook1;WorkBook1 = ExcelApp.PG(ActiveWorkBook);创建工作表对象Variant Sheet1;Sheet1 = WorkBook1.PG(ActiveSheet);创建区域对象Variant Range;Range = Sheet1.PG(Range,A1:A10);或者使用Excel.Exec(PropertyGet(Range)A1:C1).Exec(Procedure(Select);2、常用的属性操作:使Excel程序不可见ExcelApp.PS(Visible, (Variant)false);新建EXCEL文件 新建系统模板的工作簿ExcelApp.PG(workbooks).FN(Add)/默认工作簿ExcelApp.PG(workbooks).FN(Add, 1)/单工作表ExcelApp.PG(workbooks).FN(Add, 2)/图表ExcelApp.PG(workbooks).FN(Add, 3)/宏表ExcelApp.PG(workbooks).FN(Add, 4)/国际通用宏表ExcelApp.PG(workbooks).FN(Add, 5)/与默认的相同ExcelApp.PG(workbooks).FN(Add, 6)/工作簿且只有一个表或者使用ExcelApp的Exec方法Excel.Exec(PropertyGet(Workbooks).Exec(Procedure(Add); 新建自己创建的模板的工作簿ExcelApp.PG(workbooks).FN(Add, C:Tempresult.xlt);打开工作簿ExcelApp.PG(workbooks).FN(open, 路径名.xls)保存工作簿WorkBook1.FN(Save);/保存工作簿WorkBook1.FN(SaveAs, 文件名);/工作簿保存为,路径注意用退出EXCELExcelApp.FN (Quit);ExcelApp = Unassigned;或者ExcelApp.Exec(Procedure(Quit);操作工作表 选择选择工作表中第一个工作表Workbook1.PG(Sheets, 1).PR(Select);Sheet1 = Workbook1.PG(ActiveSheet); 重命名工作表Sheet1.PS(Name, Sheet的新名字); 当前工作簿中的工作表总数int nSheetCount=Workbook1.PG(Sheets).PG(Count);操作行和列 获取当前工作表中有多少行和多少列:Sheet1.PG(UsedRange).PG(Columns).PG(Count); /列数Sheet1.PG(UsedRange).PG(Rows).PG(Count);/行数 设置列宽ExcelApp.PG(Columns, 1).PS(ColumnWidth, 22);或者Range = ExcelApp.PG(Cells, 1, 3);Range.PS(ColumnWidth, 22); 设置行高ExcelApp.PG(Rows, 2).PS(RowHeight, 25);或者Range = ExcelApp.PG(Cells, 2, 1);Range.PS(RowHeight, 25); 在工作表最前面插入一行Sheet1.PG(Rows, 1).PR(Insert); 删除一行ExcelApp.PG(Rows, 2).PR(Delete); /将第2行删除/ 本文作者:ccrun ,如转载请保证本文档的完整性,并注明出处。/ 欢迎光临 C+ Builder 研究 / 摘自:/doc/go.aspid=529操作单元格 设置单元格字体Sheet1.PG(Cells, 1, 1).PG(Font).PS(Name, 隶书); /字体Sheet1.PG(Cells, 2, 3).PG(Font).PS(size, 28);/大小 设置所选区域字体Range.PG(Cells).PG(Font).PS(Size, 28);Range.PG(Cells).PG(Font).PS(Color, RGB(0, 0, 255);其中参数的设置:FontName : 隶书/字体名称Size : 12/字体大小Color : RGB(*,*,*)/颜色Underline : true/false/下划线Italic: true/false/斜体 设置单元格格式为小数百分比Sheet1.PG(Cells, 1, 1).PS(NumberFormatLocal, 0.00%); 设定单元格的垂直对齐方式Range = ExcelApp.PG(Cells, 3, 4);/ 1=靠上 2=居中 3=靠下对齐 4=两端对齐 5=分散对齐Range.PS(VerticalAlignment, 2); 设定单元格的文本为自动换行Range = ExcelApp.PG(Cells, 3, 4);Range.PS(WrapText, true);单元格的合并 Range = Sheet1.PG(Range, A1:A2);/A1和A2单元格合并String strRange = A + IntToStr(j) + : + C + IntToStr(j); /比如:A1:C5Range1=Sheet1.PG(Range, strRange.c_str(); /可以用变量控制单元格合并Range1.FN(Merge, false);读写单元格 指定单元格赋值String strValue = abcdefg;Sheet1.PG(Cells, 3, 6).PS(Value, strValue.c_str();Sheet1.PG(Cells, j, 1).PS(Value, 总记录: + String(j-6);或者使用Excel.Exec(PropertyGet(Cells)13).Exec(PropertySet(Value)15); 所选区域单元格赋值Range.PG(Cells).PS(Value, 10); 所选区域行赋值Range.PG(Rows,1).PS(Value, 1234); 工作表列赋值Sheet1.PG(Columns,1).PS(Value, 1234); 读取取值语句:String strValue = Sheet1.PG(Cells, 3, 5).PG(Value);窗口属性 显示属性ExcelApp.PS(Windowstate, 3);/最大化显示1-xlNormal/正常显示2-xlMinimized/最小化显示3-xlMaximized/最大化显示 状态栏属性ExcelApp.PS(StatusBar, 您好,请您稍等。正在查询!);ExcelApp.PS(StatusBar, false);/还原成默认值 标题属性:ExcelApp.PS(Caption, 查询系统);3、操作图表添加图表Variant Chart;Chart = ExcelApp.Exec(PropertyGet(Charts).Exec(Function(Add);ExcelApp.Exec(PropertySet(Visible) true);Chart.Exec(PropertySet(Type) -4100);滚动图表for(int nRotate=5; nRotate = 180; nRotate += 5)Chart.Exec(PropertySet(Rotation) = 0; nRotate -= 5)Chart.Exec(PropertySet(Rotation) nRotate);另外,为保证程序能正常运行,需要在程序中判断目标机器是否安装了Office;tryExcelApp = Variant:CreateObject (Excel.Application);catch(.)ShowMessage(运行Excel出错,请确认安装了Office);return;#include comobj.hpp/-/ 对指定Excel文件中的指定列进行排序/ strExcelFileName : excel文件名/ nCol : 指定的列号/ nSortStyle : 1:升序,2:降序void SortExcelColumn(String strExcelFileName, int nCol, int nSortStyle)Variant vExcelApp, vWorkbook, vRange;vExcelApp = Variant:CreateObject(Excel.Application);vExcelApp.OlePropertySet(Visible, false);vExc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国长城校园招聘考试参考题库及答案解析
- 2025年河北廊坊香河县公开招聘社区工作者30人考试参考题库及答案解析
- 2025广东东莞市第七人民医院招聘纳入岗位管理的编制外人员25人考试参考题库及答案解析
- 2025年怀化麻阳苗族自治县县直企事业单位引进25名高层次及急需紧缺人才笔试高频难、易错点备考题库及答案详解一套
- 2025湖南郴州一九八医院招聘12人考试参考题库及答案解析
- 颈椎CT横断面解剖课件
- 2024-2025学年医学检验(士)测试卷附答案详解【轻巧夺冠】
- 2025浙江湖州市德清县文化旅游发展集团有限公司招聘3人考试参考题库及答案解析
- 2024-2025学年注册公用设备工程师高分题库(考试直接用)附答案详解
- 2025中央在甘单位所属事业单位招聘1人考试参考题库及答案解析
- 资金岗位笔试题目及答案
- 虹口区2024-2025学年六年级上学期期中考试数学试卷及答案(上海新教材)
- 未婚生子小孩抚养协议书
- 测量安全培训实施要点
- 诊所负责人聘用合同9篇
- 四轮定位外协协议合同
- 有理数的加法说课课件2024-2025学年人教版数学七年级上册
- 主持人个人礼仪规范
- 2025年环卫所考试题及答案
- 2025年人教版《太阳》标准课件
- 保温车租赁合同6篇
评论
0/150
提交评论