[英]Pull a single cell or range of cells from an Excel 97-2003 spreadsheet via C# .NET
我正在開發一個基於Web的應用程序,需要從一個Excel 97-2003(.xls)電子表格中提取數據,該電子表格在單個工作表上具有多個小表。
我目前正在嘗試使用以下代碼打開並閱讀工作表:
string properties = String.Format(@"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Users\Macy\Desktop\lbr_ems.xls; Extended Properties = 'Excel 8.0;'");
using (OleDbConnection conn = new OleDbConnection(properties))
{
string worksheet = "LbrRpt";
conn.Open();
DataSet ds = new DataSet();
//string columns = String.Join(",", columnNames.ToArray());
using (OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [" + worksheet + "$]", properties))
{
DataTable dt = new DataTable();
da.Fill(dt);
ds.Tables.Add(dt);
grdComponent.DataSource = dt;
grdComponent.DataBind();
}
問題在於,它拉了整個工作表,並且所有數值均為空白。 我認為這不是我要構建的應用程序所需的代碼。
我一直在看這段代碼:
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
Excel.Sheets excelSheets = excelWorkbook.Worksheets;
string currentSheet = "Sheet1";
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet);
var cell = (Excel.Range)excelWorksheet.Cells[10, 2];
根據如何讀取單個Excel單元格值 ,但是由於沒有提及.net,我被認為可能不是基於Web的用途,或者我在某處缺少using子句。
我見過的大多數其他解決方案通常都表明使用了第三方項目。
我錯過了一些愚蠢的事情,還是只是沒有尋找正確的地方?
使用SQL從Excel讀取數據時,不嚴格限於將工作表用作FROM
子句的主題:
SELECT *
FROM [Sheet1$]
您幾乎可以使用Excel支持的任何尋址方案。 例如,您可以引用一系列單元格:
SELECT *
FROM [Sheet1$A1:C172]
您可以將范圍的開始和結束設置為同一單元格,以返回單個單元格:
SELECT *
FROM [Sheet1$A1:A1]
您還可以引用一系列列:
SELECT *
FROM [Sheet1$A:B]
或一系列行:
SELECT *
FROM [Sheet1$1:5]
或命名范圍:
SELECT *
FROM NamedRange
(請注意,如果連接字符串中的HDR=Yes
,則第一行將被視為列標題。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.