C#datagridview导入EXCEL 从指定行开始导入?

qq_29831971 2018-12-11 09:39:47
以前只做过 导入EXCEL 从第一行开始导入,
现在客户的EXCEL模板发生变化,正式数据从第八行才是正式表数据,原来的代码如下

   DataTable tb = new DataTable();

public void EcxelToDataGridView(string filePath, DataGridView dgv)
{

// string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filePath + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1'";

string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=YES\"";

OleDbConnection conn = new OleDbConnection(strConn);

conn.Open();

string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;

strExcel = "select * from [sheet1$]";

myCommand = new OleDbDataAdapter(strExcel, strConn);

ds = new DataSet();

myCommand.Fill(ds, "table1");
//根据DataGridView的列构造一个新的DataTable

foreach (DataGridViewColumn dgvc in dgv.Columns)
{
if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))
{

DataColumn dc = new DataColumn();
dc.ColumnName = dgvc.DataPropertyName;
//dc.DataType = dgvc.ValueType;//若需要限制导入时的数据类型则取消注释,前提是DataGridView必须先绑定一个数据源那怕是空的DataTable

tb.Columns.Add(dc);
}
}

//根据Excel的行逐一对上面构造的DataTable的列进行赋值
foreach (DataRow excelRow in ds.Tables[0].Rows)
{
int i = 0;
DataRow dr = tb.NewRow();
foreach (DataColumn dc in tb.Columns)
{

dr[dc] = excelRow[i];
i++;
}
tb.Rows.Add(dr);

}


//在DataGridView中显示导入的数据
dgv.DataSource = tb;

conn.Close();

}

...全文
317 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
平底锅锅锅 2018-12-19
  • 打赏
  • 举报
回复
//添加个行数判断
if(i >= 8 )
{
tb.Rows.Add(dr);
}
游北亮 2018-12-11
  • 打赏
  • 举报
回复

int startRow = 8;
int currentRow = 0;
//根据Excel的行逐一对上面构造的DataTable的列进行赋值
foreach (DataRow excelRow in ds.Tables[0].Rows)
{
    if(currentRow < startRow){
        currentRow ++;
        continue;
    }

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧