首页 新闻 搜索 专区 学院

C#读取excel文件问题!!

0
[待解决问题]

在C#中从上面这个excel文件读取数据,并用datatable储存,并分别获得编号从1001到1005的datatable。求大神帮写个完整的代码!

缪健的主页 缪健 | 菜鸟二级 | 园豆:214
提问于:2015-06-02 17:24
< >
分享
所有回答(2)
0

看了你几篇文章,大牛的感受!推荐一个读写Excel文件的类库,NPOI,个人感觉很好用!

Candy_Mouse | 园豆:202 (菜鸟二级) | 2015-06-02 17:36

DataSet ds = new DataSet();
DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();
DataTable dt3 = new DataTable();
dt2.Columns.Add("工号");
dt2.Columns.Add("时间");
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; " + "Data Source ="
+ txtPath .Text + ";Extended Properties=Excel 8.0";
OleDbConnection myConn = new OleDbConnection(strCon);
string sql = "select * from [sheet1$A:B]";
int kk = 0;
try
{
myConn.Open();
OleDbDataAdapter oda = new OleDbDataAdapter(sql, myConn);
oda.Fill(ds, "[Sheet1$]");
myConn.Close();
dt1 = ds.Tables[0];
for (int i = 0; i < dt1.Rows.Count; i++)
{
DataRow dr = dt2.NewRow();
dt2.Rows.Add(dr);
dt2.Rows[i]["工号"] = dt1.Rows[i][0];
dt2.Rows[i]["时间"] = dt1.Rows[i][1];
}

DataRowCollection rows = dt2.Rows;

for (int j = 0; j < dt2.Rows.Count; j++)
{
if (Convert.ToInt32(dt2.Rows[j]["工号"]) == 1001)
{
rows[j].Delete();
}
}
dt2.AcceptChanges();
label1.Text = dt2.Rows.Count.ToString();
//label1.Text = kk.ToString();
this.dataGridView1.DataSource = dt2;
dataGridView1.Columns[1].Width = 200;
}
catch (Exception ex)
{

MessageBox.Show(ex.Message);
}

 

这是我得代码,不知道为什么结果就是和预期不一样

支持(0) 反对(0) 缪健 | 园豆:214 (菜鸟二级) | 2015-06-02 17:38

恩,待会该Npoi来读取试试

支持(0) 反对(0) 缪健 | 园豆:214 (菜鸟二级) | 2015-06-02 17:38
0

dt2包含了所有不含1001的dt1的数据。。有什么问题。。。

爱伦狼 | 园豆:227 (菜鸟二级) | 2015-06-04 22:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册