OleDbDataReader跳过第一条记录



我有以下代码:

OleDbDataReader xlsReader =
           new OleDbCommand("Select * from [" +spreadSheetName + "]", xlsFileConnection).
           ExecuteReader();

spreadSheetName参数中我保留了我的文件名。

xlsFileConnection的连接字符串设置为

"Provider=Microsoft.Jet.OLEDB.4.0; 
 Data Source='<directory path>';
 Extended Properties='text; HDR=No; FMT=Delimited'"

当我开始执行while (xlsReader.Read())时,我从数据源中取出行#2而不是#1。

第一个建议是,HDR参数有无效的值,但似乎是可以的。

有更好和更简单的方法来读取xlsx文件,如果我是你,我会从nuget中抓取closedXML和这段代码来读取excel文件到数据表

public void ProcessExcel(string fileName)
    {
        _dt = ImportSheet(fileName);
        dgContacts.ItemsSource = _dt.DefaultView;
    }
public static DataTable ImportSheet(string fileName)
    {
        var datatable = new DataTable();
        var workbook = new XLWorkbook(fileName);
        var xlWorksheet = workbook.Worksheet(1);
        var range = xlWorksheet.Range(xlWorksheet.FirstCellUsed(), xlWorksheet.LastCellUsed());
        var col = range.ColumnCount();
        var row = range.RowCount();
        datatable.Clear();
        for (var i = 1; i <= col; i++)
        {
            var column = xlWorksheet.Cell(1, i);
            datatable.Columns.Add(column.Value.ToString());
        }
        var firstHeadRow = 0;
        foreach (var item in range.Rows())
        {
            if (firstHeadRow != 0)
            {
                var array = new object[col];
                for (var y = 1; y <= col; y++)
                {
                    array[y - 1] = item.Cell(y).Value;
                }
                datatable.Rows.Add(array);
            }
            firstHeadRow++;
        }
        return datatable;
    }

根据需要从数据表中抓取数据。

这是一个实时的工作代码,所以你只需要复制并粘贴

相关内容

  • 没有找到相关文章

最新更新