您目前已離線,請等候您的網際網路重新連線

HOW TO:使用 ASP.NET、ADO.NET 及 Visual C# .NET 查詢及顯示 Excel 資料

本文曾發行於 CHT306572
如需本文的 Microsoft Visual Basic .NET 版本,請參閱 311731

本文件參考下列 Microsoft .NET Framework 類別庫 (Class Library) 命名空間:
  • System.Data.OleDb

本文內容

結論
本文將逐步告訴您,如何使用 Visual C# .NET 透過 ASP.NET (.aspx) 網頁顯示 Excel 工作表的資料。

回到頁首

建立範例 Excel 工作表

  1. 啟動 Microsoft Excel,然後建立新工作表。
  2. 將下列資訊新增至新的工作表以建立簡單的 Excel 資料庫:

    AB
    1FirstNameLastName
    2ScottBishop
    3KatieJordan

    注意:雖然本範例的資料從 A1 儲存格開始,但是您可以在工作表內任何相鄰的儲存格加入這些資料。
  3. 將資料所在的資料列和資料行反白。
  4. [插入] 功能表上,指向 [名稱],然後按一下 [定義]
  5. [現有名稱] 文字方塊中,輸入 myRange1,然後按一下 [確定]
  6. [檔案] 功能表,按一下 [儲存檔案]。在 [儲存位置] 清單中,選取 Web 伺服器根目錄 (通常是 C:\InetPub\Wwwroot\)。在 [檔案名稱] 文字方塊中,輸入 ExcelData.xls。按一下 [確定]
  7. [檔案] 功能表上,按一下 [結束]
回到頁首

使用 Visual C# .NET 建立 ASP.NET 範例

此程式碼範例將示範如何查詢及顯示 Excel 工作表中的資訊。下列程式碼使用您在前一小節建立的工作表。
  1. 開啟 Microsoft Visual Studio .NET。接著會顯示 Visual Studio .NET 整合式開發環境 (IDE)。
  2. [檔案] 功能表上,指向 [新增],然後按一下 [專案]
  3. [新增專案] 對話方塊中,[專案類型] 下面,按一下 [Visual C# 專案]。在 [範本] 下,按一下 [ASP.NET Web 應用程式]
  4. [新增專案] 對話方塊中,找出 [名稱][位置] 文字方塊。請注意,[名稱] 文字方塊無法使用 (顯示為變淡或暗灰色)。[位置] 文字方塊包含下列文字 (或類似文字):
    http://localhost/WebApplication1
    http://localhost/ExcelCSTest 取代 [位置] 文字方塊中的文字,然後按一下 [確定]。這樣就會建立新專案,其包括名為 WebForm1.aspx 的「Web 表單」。
  5. 在 Visual Studio .NET IDE 中找出 [方案總管] 視窗。如果找不到,請按一下 [檢視] 功能表上的 [方案總管]
  6. 在 [方案總管] 中,以滑鼠右鍵按一下 [WebForm1.aspx],然後按一下 [檢視表設計工具] 以顯示網頁外觀的設計工具。此設計工具可以讓您新增控制項並處理網頁的外觀。
  7. 找到工具箱。根據 IDE 選項設定而定,工具箱可能以視窗或按鈕方式出現 (經常出現在 IDE 的左側)。如果您找不到工具箱,請按一下 [檢視] 功能表上的 [工具箱]

    如果工具箱以按鈕方式出現,請將指標移動到按鈕上方以顯示工具箱的內容。
  8. 當「Web 表單」的設計檢視為使用中時,工具箱會分為數個區段,包括 Web Form、元件、HTML 和其他區段。按一下 Web Form 區段。
  9. 在工具箱的 Web Form 區段,按一下 [DataGrid],然後將它拖曳至 WebForm1 的設計工具上。
  10. 以滑鼠右鍵按一下 [WebForm1.aspx],然後按一下 [檢視程式碼] 以顯示程式碼後置網頁來源。
  11. 將下列陳述式新增至程式碼後置網頁的頂端,命名空間區段之上:
    using System.Data.OleDb;using System.Data;					
  12. 反白下列程式碼,在程式碼上按一下右鍵,然後按一下 [複製]。在 WebForm1.aspx.cs 中,將程式碼貼進 Page_Load 事件中:
    // Create connection string variable. Modify the "Data Source"// parameter as appropriate for your environment.String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +	"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +	"Extended Properties=Excel 8.0;";// Create connection object by using the preceding connection string.OleDbConnection objConn = new OleDbConnection(sConnectionString);// Open connection with the database.objConn.Open();// The code to follow uses a SQL SELECT command to display the data from the worksheet.// Create new OleDbCommand to return data from worksheet.OleDbCommand objCmdSelect =new OleDbCommand("SELECT * FROM myRange1", objConn);// Create new OleDbDataAdapter that is used to build a DataSet// based on the preceding SQL SELECT statement.OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();// Pass the Select command to the adapter.objAdapter1.SelectCommand = objCmdSelect;// Create new DataSet to hold information from the worksheet.DataSet objDataset1 = new DataSet();// Fill the DataSet with the information from the worksheet.objAdapter1.Fill(objDataset1, "XLData");// Bind data to DataGrid control.DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;DataGrid1.DataBind();// Clean up objects.objConn.Close();					
  13. [檔案] 功能表中,按一下 [全部儲存],儲存專案檔。
  14. [建置] 功能表中按一下 [建置],以建置專案。準備程式碼後置網頁的程式碼,使其可以被執行。
  15. 在 [方案總管] 中,以右鍵按一下 WebForm1.aspx,然後按一下 [View in Browser] 以執行程式碼。
回到頁首

詳細的程式碼說明

本文的程式碼範例使用 Microsoft Jet OLE DB 提供者存取 Excel 工作表。此程式碼使用下列連接字串連接至工作表:
// Create connection string variable. Modify the "Data Source"// parameter as appropriate for your environment.String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +	"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" +	"Extended Properties=Excel 8.0;";				
就如註解所指出的,您必須修改特定 Excel 工作表的路徑資訊。此外,您也必須設定 Extended Properties 參數的值,以便正確地連接至檔案。

請注意,連接字串使用 Server.MapPath 函數。此函數使用相對於檔案之 Microsoft Internet Information Services (IIS) 的路徑,並傳回該檔案的硬碟路徑。例如,〈建立範例 Excel 工作表〉一節中,您可以在 Web 根目錄中建立 ExcelData.xls (通常位於 C:\Inetpub\Wwwroot)。這樣也會在 Wwwroot 資料夾中建立名為 ExcelCSTest 的子資料夾,並在 ExcelCSTest 資料夾中建立名為 WebForm1.aspx 的檔案。

在此範例中,硬碟上的檔案路徑如下:
     C drive        - Inetpub            - Wwwroot (which contains ExcelData.xls)                - ExcelCSTest (which contains WebForm1.aspx)				
檔案的 IIS 路徑如下:
     Web Root (which contains ExcelData.xls)        - ExcelCSTest (which contains WebForm1.aspx)				
在此範例中,從 WebForm1.aspx 頁面到 ExcelData.xls 檔案的相對路徑為 ../ExcelData.xls。「../」字元會告訴 IIS 往上一層資料夾。因此,程式碼
Server.MapPath("../ExcelData.xls")				
會傳回下列字串:
C:\Inetpub\Wwwroot\ExcelData.xls
您不需要使用 Server.MapPath。您可以將此資訊硬式編碼至特定路徑,或是使用任何方法提供硬碟上的 Excel 檔案位置。

回到頁首
参考
如需有關如何使用 ASP.NET 存取 Excel 檔案的詳細資訊,請按一下下列的文件編號,檢視 Microsoft Knowledge Base 中的文件:
307029 HOWTO: Transfer XML Data to Microsoft Excel 2002 by Using Visual C# .NET
306023 HOW TO:Transfer Data to an Excel Workbook by Using Visual C# .NET
如需有關使用 ADO.NET 的詳細資訊,請按一下下列的文件編號,檢視「Microsoft 知識庫」中的文件:
306636 HOW TO:使用 ADO.NET 與 Visual C# .NET 連接到資料庫並執行命令
314145 HOW TO:Populate a DataSet Object from a Database by Using Visual C# .NET
307587 HOW TO:Update a Database from a DataSet Object by Using Visual C# .NET
注意:本範例中所提到的公司、組織、產品、網域名稱、電子郵件位址、公司標誌、個人、地點及事件皆屬虛構。Microsoft 無意影射任何真實的公司、組織、產品、網域名稱、電子郵件位址、公司標誌、個人、地點或事件。

回到頁首
內容

文章識別碼:306572 - 最後檢閱時間:03/07/2003 03:32:00 - 修訂: 1.1

Microsoft Excel 2000, Microsoft Visual C# .NET (2002), Microsoft FORTRAN Compiler 5.1

  • kbhowto kbhowtomaster kbwebforms kbdatabase KB306572
意見反應