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);

 

運行結果

 

 

結果

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