NPOI读取excel2003 报block[2] already removed? C# NPOIOleDb.net 4.0windows7 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 读取excel,我还是建议用oledb,虽然有些问题,包括某些标题读不出(通常是合并单元格),数据类型会搞错,顺序会和excel中不一样,但好歹只要格式对,基本能读出来,且格式不变,问题也比较稳定。比如你读不出的这列列头一般来说会变成F1,还是能够用的。NPOI我主要是写excel才用,比oledb快,且方便,且有更多的可控制项。 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test1.xls;Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; OleDbConnection conn = new OleDbConnection(strConn); string strExcel = ""; DataSet ds = new DataSet(); strExcel = "select * from [sheet1$]"; OleDbDataAdapter da = new OleDbDataAdapter(strExcel, strConn); da.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { string s = ds.Tables[0].Rows[i][0].ToString();//读取第一列值 } 刚开始是用的OleDb,不是第一行第一列读不出来,是整个第一列都没读出来,这才换的NPOI,刚刚又做了一个测试,把源Excel文件中的内容,Copy到新的Excel中,然后用OleDb读,一样读不出来,但用NPOI读就读出来了,也不晓得原Excel格式有啥问题?郁闷的不行 刚开始是用的OleDb,不是第一行第一列读不出来,是整个第一列都没读出来,这才换的NPOI,刚刚又做了一个测试,把源Excel文件中的内容,Copy到新的Excel中,然后用OleDb读,一样读不出来,但用NPOI读就读出来了,也不晓得原Excel格式有啥问题?郁闷的不行Excel有很多原因导致读取不到数据,曾经遇到好几次,把Excel里面的内容重新复制到新Excel里面就可以读取了 http://download.csdn.net/detail/diaodiaop/7611721一般来说应该不是权限的问题.. 看是否是版本的问题.上面的读取没问题 建议LZ下载下来看看读取你的xls看是否保存.. 已经测试过好几遍了,把原有的文件中的任意一个单元格修改后保存,就可以读出来了。。回版主:把Excel中的内容复制到新Excel后,确实可以读出来,但额的Excel文件有点多,有1W+。。现在可以了,兄弟我用了第三种办法,直接用COM组件读取,现在可以读了,就是有点慢谢谢各位大神。。 请教 ,多窗口问题 安全的关闭串口. WPF如何改变combobox里的scrollbar的位置 fpSpread 里的Combobox 是不是有BUG啊~~~~ 数据库连接问题 用C#能不能编写标准的ActiveX控件?跟vc编写的是一样的,行啊?? 咨询一个有点难的正则 C#中,抽象类的成员默认访问修饰符是什么??? win2003+iis6+mvc2数据库问题 在线求助:如何控制窗体高度 WinForm下的DataGridView如何支持List<dynamic>的数据源? 新线程通过委托控制进度条失败,高手救急啊
比如你读不出的这列列头一般来说会变成F1,还是能够用的。
NPOI我主要是写excel才用,比oledb快,且方便,且有更多的可控制项。
OleDbConnection conn = new OleDbConnection(strConn);
string strExcel = "";
DataSet ds = new DataSet();
strExcel = "select * from [sheet1$]";
OleDbDataAdapter da = new OleDbDataAdapter(strExcel, strConn);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string s = ds.Tables[0].Rows[i][0].ToString();//读取第一列值
}
谢谢各位大神。。