国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#操作Excel(2)--打開-讀取Excel文檔

2019-11-14 16:28:33
字體:
來源:轉載
供稿:網友

由于要為某軟件實現導出Excel功能,故有此文。

本文的開發環境是Visual Studio 2010 ,C#, Excel 2007。

新建C#工程后打開Solution Explorer,可以看到如下圖片:

右鍵點擊Reference->Add References->Browse

選擇三個DLL文件(點此下載):

Interop.Excel.dll

Interop.Microsoft.Office.Core.dll

Interop.VBIDE.dll

添加上述三個引用后,Reference標簽里的內容如下:

可以看到已經引用了剛才添加的三個DLL文件。OK,下面可以開始寫代碼了。

首先,在Form1.cs中添加Excel命名空間

 

[csharp] view plaincopy
  1. using Excel;  

 

1.新建一個Excel文檔并向其中寫入內容

下面,為Form1添加Load消息響應函數,添加方法如下所示:

 

對應的Office_test1_Load函數如下:

 

[csharp] view plaincopy
  1. PRivate Excel.application      m_excel;  
  2.   
  3. private void Office_test1_Load(object sender, EventArgs e)  
  4.         {  
  5.               
  6.             m_excel     =   new     Excel.Application();              
  7.             m_excel.Application.Workbooks.Add(true);  
  8.   
  9.             int col;  
  10.             for (col = 0; col < 10; col++)  
  11.             {  
  12.                 m_excel.Cells[1, col + 1] = col;  
  13.             }  
  14.             //顯示Excel內容  
  15.             m_excel.Visible = true;  
  16.         }  


編譯,運行,得到如下效果:

 

 

通過上圖可以看到一個新的Excel文檔被創建了。下面我們再來看看如何打開一個已有的Excel文檔。

 

2.打開一個已有Excel文檔并讀取其中內容

在讀取Excel文檔之前,先來觀察一下待讀取的文檔。

如圖所示,第一行為標題,第二行為數據。此外,留意一下第一列的內容類型為:”日期“,第三列類型為:”數值“

按照常理,首先添加一個打開按鈕,對應OnOpen()監聽器。

類成員定義:

 

[csharp] view plaincopy
  1. private Excel.Application      m_excel;  
  2. private Excel.Workbook         m_workbook;   


此外,在Onload函數中要實例化m_excel。

 

 

[csharp] view plaincopy
  1. private void OnOpen(object sender, EventArgs e)  
  2.         {  
  3.             m_workbook = m_excel.Workbooks.Open(  
  4.                  "C://Users//David_ss//Desktop//項目管理//項目經費收入簡表.xlsx",  
  5.                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,  
  6.                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,  
  7.                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,  
  8.                 Type.Missing, Type.Missing);  
  9.   
  10.             m_excel.Visible = true;  
  11.         }  

下面,我們要進行文檔的讀取了。

 

為了顯示內容,我新添了幾個控件:如下圖所示

然后我們完成 ”顯示值“按鈕對應的消息響應函數 OnShowValue()

 

[csharp] view plaincopy
  1. private void OnShowValue(object sender, EventArgs e)  
  2.     {  
  3.         Range rng;  
  4.         object obj;  
  5.         String str;  
  6.         rng = (Excel.Range)m_excel.Cells[2, 1];  
  7.         obj = rng.Value2;  
  8.         System.Diagnostics.Debug.WriteLine(obj.ToString());  
  9.         str = rng.NumberFormatLocal;  
  10.         System.Diagnostics.Debug.WriteLine(str);  
  11.         this.date_ctrl.Value = DateTime.FromOADate(double.Parse(obj.ToString()));  
  12.   
  13.         rng = (Excel.Range)m_excel.Cells[2, 2];  
  14.         obj = rng.Value2;  
  15.         System.Diagnostics.Debug.WriteLine(obj.ToString());  
  16.         str = rng.NumberFormatLocal;  
  17.         System.Diagnostics.Debug.WriteLine(str);  
  18.         this.serialnumber_ctrl.Text = obj.ToString();  
  19.   
  20.         rng = (Excel.Range)m_excel.Cells[2, 3];  
  21.         obj = rng.Value2;  
  22.         System.Diagnostics.Debug.WriteLine(obj.ToString());  
  23.         str = rng.NumberFormatLocal;  
  24.         System.Diagnostics.Debug.WriteLine(str);  
  25.         this.money_ctrl.Text = obj.ToString();  
  26.   
  27.         rng = (Excel.Range)m_excel.Cells[2, 4];  
  28.         obj = rng.Value2;  
  29.         System.Diagnostics.Debug.WriteLine(obj.ToString());  
  30.         str = rng.NumberFormatLocal;  
  31.         System.Diagnostics.Debug.WriteLine(str);  
  32.         this.manager_ctrl.Text = obj.ToString();  
  33.   
  34.     }  


上面代碼分別對應4個控件的數據顯示。

 

下面是顯示的結果:

此外,上面的代碼中,我還輸出了調試信息,即每個單元格的數據類型:

 

[csharp] view plaincopy
  1. str = rng.NumberFormatLocal;  
  2. System.Diagnostics.Debug.WriteLine(str);  

調試輸出結果:

 

通過上述結果可以看出:日期格式是日期對應的是一個數字字符串。所以代碼中使用的是DateTime的FromOADate方法解析日期。

日期的格式為:yyyy/m/d。

一般的單元格類型是:G/通用格式

數值格式為:0.00_);[紅色](0.00)。

-------------------------------------------------------華麗分割-------------------------------------------

 

若想要了解更多,首先請學習一下Excel的對象模型,可以參考上一篇文章:

當然,也可以下載對應的文檔:C#操作Excel2007&Excel對象模型.pdf


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊川县| 洞口县| 黔东| 苍南县| 阆中市| 临沭县| 团风县| 垦利县| 盐池县| 苏州市| 托克托县| 浏阳市| 大洼县| 醴陵市| 枣阳市| 五常市| 曲麻莱县| 霍林郭勒市| 五指山市| 嘉定区| 谢通门县| 高尔夫| 宝应县| 海淀区| 尼勒克县| 大关县| 赤城县| 如皋市| 安康市| 和龙市| 西昌市| 丽江市| 桂阳县| 栾川县| 敦化市| 驻马店市| 阜平县| 莱州市| 蓬溪县| 衡阳市| 库尔勒市|