概要:本文介紹如何使用 Visual C# .NET 通過 ASP.Net (.ASPx) 頁顯示 Excel 工作表中的數據。
創建示例 Excel 工作表
1. 啟動 Microsoft Excel,然後創建一個新的工作表。
2. 將以下信息添加到新工作表中以創建一個簡單的 Excel 數據庫:
A B
1 FirstName LastName
2 Scott Bishop
3 KatIE Jordan
注意:雖然在本示例中數據是從單元格 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 窗體、組件、Html 和其他部分。單擊 Web 窗體部分。
9. 在工具箱的 Web 窗體部分,單擊 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 提供程序訪問 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 信息服務 (IIS) 的路徑,並返回該文件的硬盤路徑。例如,在創建示例 Excel 工作表 部分中,您在 Web 根目錄中創建了 ExcelData.xls,該目錄通常位於 C:\Inetpub\Wwwroot。這還會在 Wwwroot 文件夾中創建名為 ExcelCSTest 的子文件夾,並在 ExcelCSTest 文件夾中創建名為 WebForm1.ASPx 的文件。
在此示例中,硬盤上的文件路徑如下:
C 驅動器
- Inetpub
- Wwwroot(其中包含 ExcelData.xls)
- ExcelCSTest(包含 WebForm1.ASPx)
文件的 IIS 路徑如下所示:
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 文件在硬盤上的位置。