通过ODBC直接读、写Excel表格文件
Excel数据连接

Excel数据连接Excel作为一款强大的电子表格软件,不仅可以用来进行数据的存储和分析,还可以通过数据连接的功能,实现与其他数据库、文件以及网络数据的交互。
本文将介绍Excel数据连接的相关知识和操作步骤,帮助读者更好地利用Excel进行数据处理和分析。
一、什么是数据连接数据连接是指将Excel与其他数据源进行连接,实现数据的共享和传递。
通过数据连接,我们可以将不同数据源中的数据集成到Excel中,实现数据的集中管理和分析。
常见的数据源包括:Access数据库、SQL Server数据库、Oracle数据库、文本文件、XML文件等。
此外,还可以通过Web查询、ODBC连接、数据透视表等功能,将不同数据源中的数据实时更新到Excel中。
二、Excel中的数据连接方式1. 数据导入数据导入是将其他数据源中的数据直接复制到Excel中,形成一个独立的数据表。
在Excel中,可以选择“数据”选项卡中的“获取外部数据”功能,然后选择相应的数据源进行数据导入。
2. 数据查询数据查询是通过建立查询连接的方式,实现Excel与外部数据源的实时交互。
在Excel中,可以选择“数据”选项卡中的“获取外部数据”功能,然后选择相应的数据源进行数据查询。
3. 数据透视表数据透视表是一种快速、灵活的数据分析工具,可以将不同数据源中的数据进行关联和汇总。
在Excel中,可以通过数据透视表的功能,对外部数据源中的数据进行分析和展示。
三、Excel数据连接的操作步骤1. 数据导入(1)打开Excel软件,创建一个新的工作簿。
(2)选择“数据”选项卡中的“获取外部数据”功能,然后选择相应的数据源。
(3)按照提示,设置数据源的连接信息和导入选项。
(4)确认并导入数据到Excel中。
2. 数据查询(1)打开Excel软件,创建一个新的工作簿。
(2)选择“数据”选项卡中的“获取外部数据”功能,然后选择相应的数据源。
(3)按照提示,设置数据源的查询条件和连接信息。
Java读取Excel文件的几种方法

Java读取Excel文件的几种方法最近单位有个项目需要读取excel文件的内容,特别对java读取excel文件的方法做了一点学习,也为了其他人以后能更简单地开发,少走弯路,特写此文,以下程序经过了我的测试,可以保证程序可用,如果你照搬都不行,可能是你的环境有问题。
读取excel文件的常用开源免费方法有以下几种:JDBC-ODBC Excel Driverjxl.jarjcom.jarpoi.jar下面分别对这几种方法分别进行探讨1、JDBC-ODBC Excel Driver这种方法是将excel看成是数据库进行操作,使用SQL Select语句即可查询excel表格。
优点是:不需要第三方的jar包。
如下表样首先在控制面板进行数据源ODBC登记具体方法如下:下面就是代码了。
package xuzhe;import java.io.*;import java.sql.*;//java xuzhe.ExcelJDBCpublic class ExcelJDBC {public static void main(String[] args) throws SQLException{Connection con = null;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");con = DriverManager.getConnection( "jdbc:odbc:ExcelJDBC" );Statement st = con.createStatement();ResultSet rs = st.executeQuery( "Select * from [Sheet1$]" );ResultSetMetaData rsmd = rs.getMetaData();int numberOfColumns = rsmd.getColumnCount();System.out.println ("表格列数"+numberOfColumns );System.out.println( rsmd.getColumnName(1)+ "," +rsmd.getColumnName(2) + "," + rsmd.getColumnName(3));while (rs.next()) {for (int i = 1; i <= numberOfColumns; i++) {if (i > 1) System.out.print(", ");String columnValue = rs.getString(i);System.out.print(columnValue);}System.out.println("");}rs.close();st.close();}catch(Exception ex) {System.err.print("Exception: ");System.err.println(ex.getMessage());}finally {con.close();}}}执行结果如下:2、jxl.jarjxl.jar为开源代码,任何运行java虚拟机的操作系统都能使用这个jar包操作excel表格。
Excel高级技巧使用外部数据源进行数据导入

Excel高级技巧使用外部数据源进行数据导入Excel是一款功能强大的电子表格软件,广泛应用于数据处理和数据分析领域。
除了通过手工输入数据,用户还可以通过使用外部数据源来导入数据,以提高工作效率和减少错误。
本文将介绍一些Excel的高级技巧,以帮助用户更好地使用外部数据源进行数据导入。
一、使用导入向导导入数据Excel的导入向导是一种简便的方法来将外部数据导入到Excel中。
用户可以通过以下步骤来进行操作:1. 打开Excel,并选择“数据”选项卡。
2. 点击“获取外部数据”按钮,在弹出的菜单中选择“从其他源导入”。
3. 在弹出的“导入数据”对话框中,选择适合的外部数据源,如数据库、文本文件等。
4. 根据具体的外部数据源类型,在相应的选项卡中设置数据导入的参数,如选择要导入的数据表、选择数据范围、设置筛选条件等。
5. 点击“确定”按钮,Excel将根据用户的设置自动导入外部数据。
通过导入向导,用户可以方便地从各种外部数据源中导入数据,同时还可以进行更多的高级设置,如数据筛选、数据转换等。
二、使用数据连接来导入数据除了导入向导,用户还可以使用Excel的数据连接功能来实现数据导入。
数据连接是一种在Excel中建立与外部数据源的连接,以实时获取数据的方法。
用户可以根据以下步骤来使用数据连接:1. 打开Excel,并选择“数据”选项卡。
2. 点击“从其他源”按钮,在弹出的菜单中选择“从数据连接中获取数据”。
3. 在弹出的“选择数据源”对话框中,选择适合的数据连接类型,如ODBC、OLE DB等。
4. 根据具体的数据连接类型,在相应的选项卡中设置数据连接的参数,如连接字符串、用户名、密码等。
5. 点击“确定”按钮,Excel将建立与外部数据源的连接并导入数据。
通过数据连接,用户可以实时获取外部数据源的最新数据,并在Excel中进行进一步的分析和处理。
同时,用户还可以通过刷新数据来更新导入的数据。
三、使用Power Query进行高级数据导入Power Query是Excel提供的一款强大的数据导入和转换工具,用户可以使用它来更加灵活地导入和处理外部数据。
C++读取写入EXCEL

C++读取写⼊EXCEL程序对EXCEL做写⼊操作时值得注意到是数据量多⼤需要分多个⽂件写⼊,因为EXCEL的最⼤⾏数为65535⾏。
//读取EXCEL ,CListCtrl list// sFile :⽂件位置//sSheetName : 操作⼯作表名称//items : 读取内容赋值数组(根据需要)//nNum : 数组有效赋值⾏数(根据需要)bool ReadFromExcel(CString sFile, CString sSheetName, Item **items, int *nNum){g_sys_log->writeUDPSysLog("ReadFromExcel",0);CDatabase database;CString sSql;//定义EXCEL读取的字段CString AllCapital, Ask1, AskVol1, Bid1, BidVol1, FreeCapital, IndustryCode;CString Is100, IsSuspension, LastPrice, Name, NO, OrderPrice, OrderStatus;CString OrderVol,Positions,PriceYesterday, Reserved1, Reserved2, Reserved3;CString Reserved4, Reserved5, Reserved6, Reserved7, Reserved8, Reserved9, Reserved10;CString sDriver;CString sDsn;Item itemOnce;int i = 0;//CString sSheetName = "Sheet1";//CString sFile = "测试读取EXCEL.xls";//检查时否安装有Excel驱动 “Microsoft Excel Driver (*.xls)”sDriver = GetExcelDriver();if(sDriver.IsEmpty()){//没有发现Excel驱动AfxMessageBox("没有安装Excel驱动");return false;}//创建进⾏存取的字符串sDsn.Format("ODBC;DRIVER={%s};DSN='''';DBQ=%s", sDriver, sFile);try{//打开数据库database.Open(NULL, false, false, sDsn);CRecordset recset(&database);//设置读取的查询语句sSql.Format("SELECT * from [%s$]", sSheetName);//执⾏查询语句recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);//得到查询结果while(!recset.IsEOF()){//读取Excel内部数值recset.GetFieldValue("AllCapital", itemOnce.AllCapital);if(itemOnce.AllCapital.GetLength() < 1)break;recset.GetFieldValue("Ask1", itemOnce.Ask1);recset.GetFieldValue("AskVol1", itemOnce.AskVol1);recset.GetFieldValue("Bid1", itemOnce.Bid1);recset.GetFieldValue("BidVol1", itemOnce.BidVol1);recset.GetFieldValue("FreeCapital", itemOnce.FreeCapital);recset.GetFieldValue("IndustryCode", itemOnce.IndustryCode);// recset.GetFieldValue("Is100", itemOnce.Is100);//recset.GetFieldValue("IsSuspension", itemOnce.IsSuspension);// recset.GetFieldValue("LastPrice", stPrice);recset.GetFieldValue("Name", );recset.GetFieldValue("NO", itemOnce.NO);recset.GetFieldValue("OrderPrice", itemOnce.OrderPrice);recset.GetFieldValue("OrderStatus", itemOnce.OrderStatus);recset.GetFieldValue("OrderVol", itemOnce.OrderVol);recset.GetFieldValue("Positions", itemOnce.Positions);recset.GetFieldValue("PriceYesterday", itemOnce.PriceYesterday); recset.GetFieldValue("Reserved1", itemOnce.Reserved1);recset.GetFieldValue("Reserved2", itemOnce.Reserved2);recset.GetFieldValue("Reserved3", itemOnce.Reserved3);recset.GetFieldValue("Reserved4", itemOnce.Reserved4);recset.GetFieldValue("Reserved5", itemOnce.Reserved5);recset.GetFieldValue("Reserved6", itemOnce.Reserved6);recset.GetFieldValue("Reserved7", itemOnce.Reserved7);recset.GetFieldValue("Reserved8", itemOnce.Reserved8);recset.GetFieldValue("Reserved9", itemOnce.Reserved9);recset.GetFieldValue("Reserved10", itemOnce.Reserved10);//加⼊到列表中items[i]->AllCapital = itemOnce.AllCapital;items[i]->Ask1= itemOnce.Ask1;items[i]->AskVol1 = itemOnce.AskVol1;items[i]->Bid1 = itemOnce.Bid1;items[i]->BidVol1 = itemOnce.BidVol1;items[i]->FreeCapital = itemOnce.FreeCapital;items[i]->IndustryCode = itemOnce.IndustryCode;items[i]->Is100 = itemOnce.Is100;items[i]->IsSuspension = itemOnce.IsSuspension;items[i]->LastPrice = stPrice;items[i]->Name = ;items[i]->NO = itemOnce.NO;items[i]->OrderPrice = itemOnce.OrderPrice;items[i]->OrderStatus = itemOnce.OrderStatus;items[i]->OrderVol = itemOnce.OrderVol;items[i]->Positions = itemOnce.Positions;items[i]->PriceYesterday = itemOnce.PriceYesterday;items[i]->Reserved1 = itemOnce.Reserved1;items[i]->Reserved2 = itemOnce.Reserved2;items[i]->Reserved3 = itemOnce.Reserved3;items[i]->Reserved4 = itemOnce.Reserved4;items[i]->Reserved5 = itemOnce.Reserved5;items[i]->Reserved6 = itemOnce.Reserved6;items[i]->Reserved7 = itemOnce.Reserved7;items[i]->Reserved8 = itemOnce.Reserved8;items[i]->Reserved9 = itemOnce.Reserved9;items[i]->Reserved10 = itemOnce.Reserved10;i ++;//移动下⼀⾏recset.MoveNext();}*nNum = i;//关闭数据库database.Close();}catch(CDBException e){AfxMessageBox("数据库错误:" + e.m_strError);return false;}return true;}///////////////////////////////////////////////////////华丽分割线//////////////////////////////////////////////////////////////////////创建并写⼊Excel⽂件void WriteToExcel(){g_sys_log->writeUDPSysLog("WriteToExcel",0);CDatabase database;CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动CString sExcelFile = "c:\\demo.xls"; // 要建⽴的Excel⽂件,可以放在函数参中CString sSql;TRY{// 创建进⾏存取的字符串sSql.Format("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s", sDriver, sExcelFile, sExcelFile);// 创建数据库 (既Excel表格⽂件)if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ){// 创建表结构(姓名、年龄)sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)";database.ExecuteSQL(sSql);// 插⼊数值sSql = "INSERT INTO demo (Name,Age) VALUES ('徐景周',26)";database.ExecuteSQL(sSql);sSql = "INSERT INTO demo (Name,Age) VALUES ('徐志慧',22)";database.ExecuteSQL(sSql);sSql = "INSERT INTO demo (Name,Age) VALUES ('郭徽',27)";database.ExecuteSQL(sSql);}// 关闭数据库database.Close();}CATCH_ALL(e){TRACE1("Excel驱动没有安装: %s",sDriver);}END_CATCH_ALL;}。
Excel 文件读写脚本说明

Excel 文件读写脚本说明1.单元格属性设置。
Sheets表示一个表单,sheets[0]表示第一个表单。
表单是从0开始的,不是从1开始。
插入数据:2.字体属性设置。
字体颜色和网页上的字体颜色是一致的,可以用$加十六进制的颜色代码来表示。
Cell 单元格Sheets[0]表示第一个表单,cell[0,0]表示单元格A1。
Col表示列,row表示行,都是从0开始。
xls.sheets[0].Cell[col,row].FontName:=’宋体’字体名称括起来。
xls.sheets[0].Cell[col,row].FontColor:=ColorToWebColor()字体颜色,和网页上的字体颜色是一致的,可以用$加十六进制的颜色代码来表示,例如: ColorToWebColor(clblack)黑色ColorToWebColor($8515C7)紫色。
RGB(红绿蓝)调色。
xls.sheets[0].Cell[col,row].FontSize字体大小,对应罗马数字。
例如:10,16xls.sheets[0].Cell[col,row].FontStyle字体风格,共三种,xfsStrikeOutxfsItalic, xfsBold,字体风格:xls.sheets[0].Cell[col,row].FontStyle := 0;0表示普通风格。
xls.sheets[0].Cell[col,row].FontStyle := 1; 1表示加粗。
xls.sheets[0].Cell[col,row].FontStyle := 2; 2表示斜体。
xls.sheets[0].Cell[col,row].FontStyle := 3; 3表示删除线。
xls.sheets[0].Cell[col,row].FontStyle := 4; 4表示加粗加斜体。
xls.sheets[0].Cell[col,row].FontStyle := 5; 5表示加粗加删除线。
免费木马知识

找到运行程序的路径.!然后关闭选择的程序!
只要按一下按钮直接把所有运行窗口的密码全部变成真正的符号
网络资源管理器及源代码(1.0)
asylum_014_fe木马(含源程序)
DOS操作系统源代码
Dotpot Port Scanner 0.92
87 记录键盘,并且到一定时候发送到指定的Email里 键盘记录并发送到指定的Email
简单的说是个远程控制程序 一个远程控制程序
经典加解密源码
可以控制正在运行窗口,改变窗口里面的内容...不可思议
垃圾制造者在任何文件上添加字节
另一个可以在你的计算机上开FTP服务器的木马源代码
36 架构反弹端口远程控制例程
37 进程门神V1.0带源码
38 经典远程控制木马RemoteXP代码
39 经典远程控制木马Way2.4代码
40 经典远控木马NetBus代码
41 经典远控木马小马哥代码
42 局域网扫描、远程启动源代码
43 两款小插件的源码 FlatStyle和LBButton
木马的扫描
骗取Novell网密码的源代码
拖动程序内的图标得到窗口的handle,class,text,parent,颜色,windo
完整的特洛伊木马 PRIORITY 源代码
完整的特洛伊木马 Serve_Me 源代码
完整的下载程序
完整的子网扫描程序本机和远程机器的端口扫瞄
100 网路IP小工具,包括扫瞄,Ping,多线Ping
直接通过ODBC读、写Excel表格文件示例源码(1.0)
Word2000&XP中内部COM插件的编程实现(源码)(1.0)
Excel数据导入外部数据库连接和查询外部数据源

Excel数据导入外部数据库连接和查询外部数据源在Excel中,我们可以通过外部数据库连接和查询外部数据源来实现数据的导入和使用。
这一功能可以帮助我们更方便地处理和分析大量的数据,提高工作效率。
本文将介绍如何使用Excel进行数据导入和外部数据源查询的方法和步骤。
一、外部数据库连接1. 打开Excel并创建一个新的工作簿。
2. 在工作簿的“数据”选项卡中,点击“从其他源”。
3. 在弹出的菜单中选择“从数据库”选项。
4. 在“数据源向导”中,选择一个数据库驱动程序,如Microsoft ODBC驱动程序。
5. 点击“下一步”并填写数据库服务器的详细信息,如服务器名称、数据库名称、用户名和密码等。
6. 完成连接设置后,可以选择“测试连接”来确保连接是否成功。
7. 点击“下一步”并选择在Excel中进行数据导入的方式,如选择表格、视图或者SQL查询。
8. 点击“下一步”并完成导入设置后,点击“完成”即可将数据导入到Excel中。
二、查询外部数据源1. 打开Excel并创建一个新的工作簿。
2. 在工作簿的“数据”选项卡中,点击“从其他源”。
3. 在弹出的菜单中选择“从数据连接向导”。
4. 在“数据连接向导”中,选择一个数据源类型,如数据库、文本文件或者Web。
5. 根据选择的数据源类型,填写相应的详细信息。
6. 点击“下一步”并选择在Excel中进行数据导入的方式,如选择表格、视图或者SQL查询。
7. 根据需要设置数据过滤和排序等选项。
8. 点击“下一步”并完成查询设置后,点击“完成”即可将数据查询结果导入到Excel中。
需要注意的是,使用外部数据库连接和查询外部数据源功能前,我们需要确保已经安装了相应的数据库驱动程序或者具有访问外部数据源的权限。
通过Excel的数据导入和外部数据源查询,我们可以更灵活地利用各种数据资源,并直接在Excel中进行数据的处理和分析。
无论是进行统计分析、制作图表还是生成报告,Excel的这一功能都能满足我们的需求,提高工作效率。
【推荐】vc读写excel范例-word范文模板 (23页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==vc读写excel范例篇一:VC++操作EXCEL表格,附带两个小例子C++读取Excel的XLS文件的方法有很多,但是也许就是因为方法太多,大家在选择的时候会很疑惑。
由于前两天要做导表工具,比较了常用的方法,总结一下写个短文,1. OLE的方式这个大约是最常用的方式,这个方式其实启动了一个EXCEL的进程在背后读写EXCEL文件,这个方式的最大好处是什么事情都能做。
包括设置EXCEL的格式,增加删除Sheet,读写单元格,等等。
功能几乎是最全的,而且使用起来也不是特别的难。
其基本方法都是使用导出的.h文件进行OLE操作,但是由于OLE的接口说明文档不多,想非常完美的使用她们也不是太容易,好在例子也很多。
网上普遍认为OLE速度慢,EXCEL的OLE读写方式也基本一样。
但是读取速度可以改进,如果在读取的加载整个Sheet的Range的全部数据,而不是一个个单元格读取,那么速度还是相对不错。
想想原理也很简单,整体读取减少了OLE的交互次数。
OLE的写入方式一般只能几个进行比较方便,所以速度可能要快很多。
我自己的亲身体会是,一个EXCEL文件,100多列的字段,如果采用一个个单元格的读取方式,1s大约3条左右的记录,如果整体读取,速度可以提高几十倍。
OLE读写EXCEL方式功能很强大,读取速度还可以,但写入速度不高,当然这个方式不可能移植的,而且你必须安装了EXCEL。
2.Basic EXCEL 方式这是CodeProject上的一个推荐开源工程了,/KB/office/BasicExcel.aspx作者是基于EXCEL的文件格式进行的处理。
但是为什么叫Basic EXCEL呢。
他不支持很多东西,公式,文件格式,表格合并等(有人说中文支持也不好),所以可以认为他只支持最基本的EXCEL表格,我自己的尝试是如果这个EXCEL文件有其他元素(公式,格式等),使用Basic EXCEL读取会失败。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
想要通过ODBC直接读、写Excel表格文件,首先,应确保ODBC中已安装有Excel表格文件的驱动"MICROSOFT EXCEL DRIVER (*.XLS)"。
然后,可根据下面步骤进行:1. 在StdAfx.h文件中加入:include <afxdb.h> include <odbcinst.h> 2. 通过ODBC直接创建Excel文件(暂定文件名:Demo.xls) //创建并写入Excel文件void CRWExcel::WriteToExcel() { CDatabase database; CStringsDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动CStringsExcelFile = "c:\\demo.xls"; // 要建立的Excel文件CStringsSql; TRY { // 创建进行存取的字符串sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\" ;DBQ=%s",sDriver, sExcelFile, sExcelFile); // 创建数据库(既Excel表格文件) if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ) { // 创建表结构(姓名、年龄) sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)"; database.ExecuteSQL(sSql); // 插入数值sSql = "INSERT INTO demo (Name,Age) VALUES ('徐景周',26)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO demo (Name,Age) VALUES ('徐志慧',22)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO demo (Name,Age) VALUES ('郭徽',27)"; database.ExecuteSQL(sSql); } // 关闭数据库database.Close(); } CATCH_ALL(e) { Excel学习教程Excel介绍Excel教程Excel 表格Excel函数Excel图表TRACE1("Excel驱动没有安装: %s",sDriver); } END_CATCH_ALL; } 3. 通过ODBC直接读取Excel文件(暂定文件名:Demo.xls) // 读取Excel文件void CRWExcel::ReadFromExcel() { CDatabase database; CStringsSql; CString sItem1, sItem2; CStringsDriver; CStringsDsn; CStringsFile = "Demo.xls"; // 将被读取的Excel文件名// 检索是否安装有Excel驱动"Microsoft Excel Driver (*.xls)" sDriver = GetExcelDriver(); if (sDriver.IsEmpty()) { // 没有发现Excel驱动AfxMessageBox("没有安装Excel驱动!"); return; } // 创建进行存取的字符串sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s", sDriver, sFile); TRY { // 打开数据库(既Excel文件) database.Open(NULL, false, false, sDsn); CRecordsetrecset(&database); // 设置读取的查询语句. sSql = "SELECT Name, Age " "FROM demo " "ORDER BY Name "; // 执行查询语句recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly); // 获取查询结果while (!recset.IsEOF()) { //读取Excel内部数值recset.GetFieldValue("Name ", sItem1); recset.GetFieldValue("Age", sItem2); // 移到下一行recset.MoveNext(); } // 关闭数据库database.Close(); } CATCH(CDBException, e) { // 数据库操作产生异常时... AfxMessageBox("数据库错误: " + e->m_strError); } END_CATCH; } // 获取ODBC中Excel驱动CStringCRWExcel::GetExcelDriver() { char szBuf[2001]; WORD cbBufMax = 2000; WORD cbBufOut; char *pszBuf = szBuf; CStringsDriver; // 获取已安装驱动的名称(涵数在odbcinst.h里) if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut)) return ""; // 检索已安装的驱动是否有Excel... do { if (strstr(pszBuf, "Excel") != 0) { //发现! sDriver = CString(pszBuf); break; } pszBuf = strchr(pszBuf, '\0') + 1; } while (pszBuf[1] != '\0'); return sDriver; }。