本文示範如何使用 Visual C# .NET,透過 ASP.NET (.aspx) 頁面查詢和顯示 Excel 工作表中的數據。
原始產品版本: ASP.NET
原始 KB 編號: 306572
建立範例 Excel 工作表
開始Microsoft Excel,然後建立新的工作表。
將下列資訊新增至新的工作表,以建立 Excel 資料庫:
資料列編號 A B 1 FirstName LastName 2 Scott 主教 3 凱蒂 約旦 注意
雖然數據從此範例中的儲存格 A1 開始,但您可以將此資料新增至工作表內的任何相鄰儲存格。
反白顯示數據所在的數據列和數據行。
在 [ 插入] 功能表上,指向 [ 名稱],然後按下 [ 定義]。
在活頁簿中的 [名稱] 文本框中,輸入 myRange1,然後按兩下 [確定]。
在 [檔案] 功能表上,按一下 [儲存]。 在 [ 儲存] 清單中,選取網頁伺服器根目錄(通常是
C:\InetPub\Wwwroot\
)。 在 [ 檔名] 文本框中,輸入 ExcelData.xls。 按一下 [確定]。在 [檔案] 功能表上按一下 [結束] 。
使用 Visual C# .NET 建立 ASP.NET 範例
此程式代碼範例示範如何在 Excel 工作表中查詢和顯示資訊。 下列程式代碼會使用您在上一節中建立的工作表。
開啟 Microsoft Visual Studio .NET。 Visual Studio .NET 集成開發環境 (IDE) 隨即顯示。
在 [檔案] 功能表上,指向 [開新檔案] ,然後按一下 [專案] 。
在 [新增專案] 對話方塊的 [項目類型] 底下,按兩下 [Visual C# 專案]。 在 [範本] 底下,按兩下 [ASP.NET Web 應用程式]。
在 [ 新增專案 ] 對話框中,找出 [ 名稱 ] 和 [位置 ] 文本框。
注意
- [名稱] 文字框無法使用(顯示為灰色或變暗)。 [位置] 文字框包含文字(或類似的)。
http://localhost/WebApplication1
- 將 [位置] 文字取代為
http://localhost/ExcelCSTest
,然後按兩下 [確定]。 系統會建立新的專案,其中包含名為 WebForm1.aspx的Web窗體。
- [名稱] 文字框無法使用(顯示為灰色或變暗)。 [位置] 文字框包含文字(或類似的)。
在 Visual Studio .NET IDE 中,找出 [方案總管] 視窗。 如果找不到,請單擊 [檢視] 功能表上的 [方案總管]。
在 方案總管 中,以滑鼠右鍵按兩下 [WebForm1.aspx],然後按兩下 [檢視設計工具] 以顯示頁面外觀的設計工具。 設計工具可讓您新增控制項並操作頁面的外觀。
找出工具箱。 根據您的 IDE 選項設定,工具箱可以顯示為視窗或按鈕(通常出現在 IDE 左側)。 如果找不到工具箱,請按兩下 [檢視] 功能表上的 [工具箱]。
如果工具箱顯示為按鈕,請將指標移至按鈕上方,以便顯示工具箱的內容。
當 Web 表單的設計工具檢視使用中時,工具箱會分成區段,包括 Web Form、元件、HTML 和其他區段。 按兩下 [Web Form] 區段。
在工具箱的 [Web Form] 區段中,按兩下 [DataGrid],然後將它拖曳到 WebForm1 的設計工具上。
以滑鼠右鍵按兩下 WebForm1.aspx,然後按兩下 [ 檢視程式代碼 ] 以顯示程式代碼後置頁面來源。
將下列語句新增至程式碼後置頁面頂端的命名空間區段上方:
using System.Data.OleDb; using System.Data;
反白顯示下列程式代碼,以滑鼠右鍵按下程式代碼,然後按下 [ 複製]。 在 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();
在 [ 檔案] 功能表上,按兩下 [ 全部 儲存] 以儲存項目檔。
在 [ 建置] 功能表上,按兩下 [建 置] 以建置專案。 此步驟會在程式碼後置頁面中準備程序代碼,以便執行程序代碼。
在 方案總管 中,以滑鼠右鍵按兩下 [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\ExcelCSTest
。 Wwwroot 包含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 物件
注意
此處所描述的範例公司、組織、產品、網域名稱、電子郵件地址、商標、人員、地點與事件均屬虛構。 並非影射任何真實的公司、組織、產品、網域名稱、電子郵件地址、商標、人員、地點或事件。