簡體   English   中英

通過C#.NET從Excel 97-2003電子表格中提取單個單元格或單元格范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM