当前位置: 首页 > 知识库问答 >
问题:

通过C#从Excel 97-2003电子表格中提取单个单元格或单元格范围。净额

轩辕庆
2023-03-14

我正在开发一个基于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单元格值,但我相信,由于没有提及,它可能不会用于基于web的使用。net,或者我在某个地方缺少了using子句。

我看到的大多数其他解决方案通常表示使用第三方项目。

我是错过了一些愚蠢的简单的事情,还是只是找不到正确的地方?

共有1个答案

国盛
2023-03-14

使用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,则第一行将被视为列标题。)

 类似资料:
  • 问题内容: 我想在不打开应用程序的情况下对excel中的单元格进行调整。我想和詹金斯一起做,这样我就可以自动化(回归)测试。(这甚至可能吗?) 正如您在附上的图像中看到的那样,我努力将excel中的“ N”值更改为“ Y”值,反之亦然。我想通过Jenkins的用户界面来实现这一目标。我已经听说过类似参数化构建的内容,但是我无法在任何网站上获得帮助,也无法提供有关该主题的更多信息。 我想要实现的是这

  • 我们如何从谷歌电子表格中的单元格中获得价值? 我有行和列索引从

  • 我做了一个PHP脚本,使用api v4将一些信息导出到谷歌电子表格。当我尝试向单元格中添加注释时,我应该为每个注释向API发出请求,这对我来说是一个问题,前面已经解释过了。 我目前的方法是以下一种,我试图在单行的每一列上添加注释($HeaderNotes是一个数组): 在这种方法中,注释是一个接一个地添加的(使用循环),并且工作正常。主要的问题是,我做的请求和notes一样多,而谷歌的Cuota有

  • 有人知道从工作簿中的每个工作表中提取某个单元格值的命令吗?或者我可以写一个简单的宏?

  • 问题内容: Gdata提供了一种基于时间戳仅从Google电子表格中获取更改的单元格的方法。如何为Gdata调用创建时间戳? 即“将仅返回发布时间等于或晚于指定时间戳记的条目。” setPublishedMax()https://developers.google.com/gdata/javadoc/com/google/gdata/client/Query#setPublishedMax (co

  • 问题内容: 我想根据第1列中的值给表格单元格上色,如果值不等于第1列中的值,则颜色应为青色,但我的代码不起作用: 问题答案: 是否必须突出显示单元格的决定必须在TableCellRenderer中进行。它不能在JTable中进行。因此,(没有)没有理由要重写JTable中的方法。相反,您可以将列的CellRenderer设置为TableCellRenderer的自己实现。 在此示例中,列2和3接收