共用方式為


使用 ASP.NET、ADO.NET 和 Visual C# .NET 查詢及顯示 Excel 數據

本文示範如何使用 Visual C# .NET,透過 ASP.NET (.aspx) 頁面查詢和顯示 Excel 工作表中的數據。

原始產品版本: ASP.NET
原始 KB 編號: 306572

建立範例 Excel 工作表

  1. 開始Microsoft Excel,然後建立新的工作表。

  2. 將下列資訊新增至新的工作表,以建立 Excel 資料庫:

    資料列編號 A B
    1 FirstName LastName
    2 Scott 主教
    3 凱蒂 約旦

    注意

    雖然數據從此範例中的儲存格 A1 開始,但您可以將此資料新增至工作表內的任何相鄰儲存格。

  3. 反白顯示數據所在的數據列和數據行。

  4. 在 [ 插入] 功能表上,指向 [ 名稱],然後按下 [ 定義]。

  5. 在活頁簿中的 [名稱] 文本框中,輸入 myRange1,然後按兩下 [確定]。

  6. 在 [檔案] 功能表上,按一下 [儲存]。 在 [ 儲存] 清單中,選取網頁伺服器根目錄(通常是 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],然後按兩下 [在瀏覽器中檢視] 以執行程式碼。

其他程式代碼說明

本文中的程式代碼範例會使用 Microsoft Jet OLE DB Provider 來存取 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 網際網路資訊服務 (IIS) 的路徑,並傳回該檔案的硬碟路徑。 例如,在 [建立範例 Excel 工作表] 區段中,您會在通常位於 C:\Inetpub\Wwwroot的 Web 根目錄中建立ExcelData.xls。 這也會在 wwwroot 資料夾內建立名為 ExcelCSTest子資料夾,並在_ExcelCSTest_folder內建立名為 WebForm1 的檔案.aspx。

在這裡範例中,硬碟上的檔案路徑就像 C:\Inetpub\Wwwroot\ExcelCSTestWwwroot 包含ExcelData.xls,ExcelCSTest 包含WebForm1.aspx

檔案的 IIS 路徑就像 C:\Web Root\ExcelCSTest。 而 Web 根目錄包含ExcelData.xls,ExcelCSTest 則包含WebForm1.aspx。

在此情況下,從WebForm1.aspx頁面到ExcelData.xls檔案的相對路徑為 。。/ExcelData.xls。 . ./ 字元會通知 IIS 向上一個資料夾層級。 因此,程式代碼 Server.MapPath("../ExcelData.xls") 會傳回下列字串:

C:\Inetpub\Wwwroot\ExcelData.xls

您不需要使用 Server.MapPath。 您也可以將這項資訊硬式編碼到特定路徑,也可以使用任何方法來提供硬碟上 Excel 檔案的位置。

參考資料

如需使用 ADO.NET 的詳細資訊,請參閱 如何使用 Visual C# .NET 從資料庫填入 DataSet 物件

注意

此處所描述的範例公司、組織、產品、網域名稱、電子郵件地址、商標、人員、地點與事件均屬虛構。 並非影射任何真實的公司、組織、產品、網域名稱、電子郵件地址、商標、人員、地點或事件。