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

使用OLEDB对象从Excel工作表中读取行号

林玮
2023-03-14

我正在使用OLEDB对象读取Excel文件并返回DataTable中的数据。下面的Excel工作表有两列,这两列是导入的,但我也想用我的数据读取Excel行号。

这是我用来读取Excel文件的代码:

private DataTable ImportExcel2007(String strFilePath)
{
    if (!File.Exists(strFilePath)) return false;
    String strExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;"
    + "Data Source=" + strFilePath + ";"
    + "Extended Properties='Excel 8.0;HDR=Yes'";
    OleDbConnection connExcel = new OleDbConnection(strExcelConn);
    OleDbCommand cmdExcel = new OleDbCommand();
    try
    {
        cmdExcel.Connection = connExcel;

        //Check if the Sheet Exists
        connExcel.Open();
        DataTable dtExcelSchema;
        //Get the Schema of the WorkBook
        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
        connExcel.Close();

        //Read Data from Sheet1
        connExcel.Open();
        OleDbDataAdapter da = new OleDbDataAdapter();
        DataSet ds = new DataSet();
        string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
        cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";

        //Range Query
        //cmdExcel.CommandText = "SELECT * From [" + SheetName + "A3:B5]";

        da.SelectCommand = cmdExcel;
        da.Fill(ds);
        connExcel.Close();
        return ds.Table[0];
    }
    catch
    {
        return null;
    }
    finally
    {
        cmdExcel.Dispose();
        connExcel.Dispose();
    }
}

我可以通过数据表中的新列的增量数来管理它,但是我可以应用WHERE子句和SELECT语句来返回来自不同行号的数据吗(应用增量行号可能会失败)?

共有1个答案

翁和颂
2023-03-14

不幸的是,OLEDB不允许您基于行号进行选择。您可以使用如下内容:

int rowNum = 0;
foreach (DataTable dt in ds.Tables)
{
    dt.Columns.Add("RowNum",typeof(Int32));
    rowNum = 1;
    foreach (DataRow dr in dt.Rows)
    {
        dr["RowNum"] = rowNum++;
    }
}
 类似资料:
  • 如何在Katalon Studio中从excel工作表(工作表1、工作表2...等)中读取数据。我可以从一张表中读取数据。但是我面临着多张纸的困难。

  • 问题内容: 我正在使用NetBeans 6.9.1使用Spring / Hibernet。我正在尝试读取Excel文件(.xlsx- Office 2007)。读取Excel文件的代码如下,使用来存储Excel工作表中的数据。 以下是我的方法,该方法调用上述方法以读取指定的Excel文件 在执行此代码时,将引发以下异常。 提供的数据似乎在Office 2007+ XML中。您正在调用POI中与OL

  • 我可以知道如何从Katalon Studio的excel工作表中读取数据,以便从文件中读取APIendpoint以检查其输出吗? 如何用java编写代码来运行URL并验证来自APIendpoint的响应?

  • 似乎这里和这里已经有了答案,但是,这些解决方案都不适合我。 我正在努力 不管怎样,最后仍然包含第一张而不是第二张。我使用的是Python 3和Pandas 0.20。1(水蟒发行版)。我错过了什么?如何将第二张图纸加载到?

  • 问题内容: 我遵循了使用Apache POI XSSF构造工作簿的简单指南。遵循相同的指南,我能够写出一张Excel工作表,但是,当尝试从其中读取数据时,我收到了代码后显示的错误。 码: 错误输出: 线程“主”中的异常java.lang.NoSuchFieldError:org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(

  • 本文向大家介绍使用Python对Excel进行读写操作,包括了使用Python对Excel进行读写操作的使用技巧和注意事项,需要的朋友参考一下 学习Python的过程中,我们会遇到Excel的读写问题。这时,我们可以使用xlwt模块将数据写入Excel表格中,使用xlrd模块从Excel中读取数据。下面我们介绍如何实现使用Python对Excel进行读写操作。 Python版:3.5.2 通过pi