2.使用 Visual Studio Tools for Office(VSTO)访问Excel数据表

 使用 Visual Studio Tools for OfficeVSTO)访问Excel数据表

    这个方法不限于32位系统,64位系统也可以通过COM对象访问Excel,但要有Microsoft Office Object Library存在。在安装VS2008 过程中可以选择安装VSTO模块。以下以建立文件级程序来说明如何使用VSTO

先说俺的系统配置:

系统:Windows Server 2003 R2 X64

开发软件:Microsoft VS 2008 Team

Office版本:Excel2007

数据库: MSSQL Server 2008

2.1 创建一个例子数据表。

打开MS SQL Server 2008 ,假设已经建立数据库XTJC,现创建一个表执行脚本

use XTJC

CREATE TABLE [dbo].[yyqint](

    [id] [int] IDENTITY(1,1) NOT NULL,

    [Customer] [nvarchar](50) NULL,

    [CustomerContact] [nvarchar](50) NULL,

    [CustomerTelephone] [nvarchar](50) NULL,

    [AccountManager] [nvarchar](50) NULL,

    [AMTelephone] [nvarchar](50) NULL,

    [AccessType] [nvarchar](50) NULL,

    [AccessAmount] [int] NULL,

    [BusinessName] [nvarchar](50) NULL,

    [Regional] [nvarchar](50) NULL,

    [PlatformLoginAccountid] [int] NULL,

    [AccessInforid] [int] NULL,

    [Implementationid] [int] NULL,

    [id] ASC

) ON [PRIMARY];

 

2.2 建立XML映射:俺有这样一张表Book2.xlsx,想通过读取Excel数据,最终写入MSSQL

数据表

现打算通过VS2008读取EXCEL2003表中『用户名称』,『客户联系人』,『联系电话』,『客户经理』,『客户经理联系电话』,『业务类型』,『前端数量』,『业务类别』,『区域』字段值

新建一个解决方案,在解决方案上添加一个Excel 2007工作簿项目命名为ExcelWorkbook1,选择复制现有文档Book2.xlsx。确认后VS2008打开Book2.xlsx文档,另外,本文想建立EXCELXML映射文件,程序通过Xpath访问相应单元格,所以首先要建立XML映射文件,T1schema.Xml映射文件如下:

<?xml version="1.0" standalone="yes"?>

<QQTintDataSet xmlns="http://tempuri.org/QQTintDataSet.xsd">

 <yyexcel>

    <id>1</id>

    <Customer></Customer>

    <CustomerContact></CustomerContact>

    <CustomerTelephone></CustomerTelephone>

    <AccountManager></AccountManager>

    <AMTelephone></AMTelephone>

    <AccessType></AccessType>

    <AccessAmount></AccessAmount>

    <BusinessName></BusinessName>

    <Regional></Regional>

  </yyexcel>

</QQTintDataSet>

Excel2007“开发工具选项卡上的“XML”组中,单击。在“XML 任务窗格中,单击“XML 映射。添加T1schema.Xml映射文件, 确认后如图

 

映射

拖动『ns1:Customer』到单元格『用户名称』,如此类推,建立XML映射

 

映射后

 

关于Excel2007如何显示“XML源”按钮

http://office.microsoft.com/zh-cn/excel/HP102064082052.aspx

2.3编程读取相应数据,并写入数据库

创建一个Dataset,该数据集是数据库表yyqint的映射,命名为DataSet1

 

 

数据集

打开文件Sheet1.cs,在Sheet1_Startup过程中添加读取Excel数据代码如下(非优化):

 Excel.Range rag; //定义Excel单元格

 DataSet1 ds1 = new DataSet1(); //映射MSSQL数据表DataSet

 DataTable dt1=ds1.Tables[0];

 DataColumn dc1;

 DataRow dr1;

dr1 = dt1.NewRow();//增加新行。

 string querystr;

 for (int i = 1; i <= 9;i++)

 {

   querystr = "/ns1:QQTintDataSet/ns1:yyexcel/ns1:";

   dc1 = dt1.Columns[i];

   querystr = querystr + dc1;

   rag = this.XmlDataQuery(querystr, System.Type.Missing, System.Type.Missing);

   dr1[i] = rag.Value2;

 }

 dt1.Rows.Add(dr1);//新行写入数据表

  //ConsoleApplication1.DataSet1TableAdapters.yyqintTableAdapterDataSet1.Designer.cs定义

  DataSet1TableAdapters.yyqintTableAdapter ta1 = new ExcelWorkbook1.DataSet1TableAdapters.yyqintTableAdapter();

  ta1.Update(ds1);

 

运行结果

 

 

结果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章