Code Bye

NPOI读取excel2003 错误 block[2] already removed

NPOI读取Excle2003时 HSSFWorkbook wk = new HSSFWorkbook(fs); 初始化WorkBook时报block[2] already removed 错误,如何解决?google了一下,参照java的一些建议说修改Excel文件的权限,设置过后,一样无效。初始化fs时用的是全路径。急!NPOI版本2.1.1。VS2013、.NET 4.0、windows7.

另外,Excel第一行是标题,第一列的标题是“时间\科目”,用OleDb第一列没有读出来,不知道是什么问题,后来就改用NPOI,也出了问题!

方案推荐指数:20
读取excel,我还是建议用oledb,虽然有些问题,包括某些标题读不出(通常是合并单元格),数据类型会搞错,顺序会和excel中不一样,但好歹只要格式对,基本能读出来,且格式不变,问题也比较稳定。

比如你读不出的这列列头一般来说会变成F1,还是能够用的。

NPOI我主要是写excel才用,比oledb快,且方便,且有更多的可控制项。

方案推荐指数:20
如果只是读取应该不会这样,是不是文件处于打开或写状态?
方案推荐指数:20
     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();//读取第一列值
             }
方案推荐指数:20

Excel有很多原因导致读取不到数据,曾经遇到好几次,把Excel里面的内容重新复制到新Excel里面就可以读取了

方案推荐指数:20
http://download.csdn.net/detail/diaodiaop/7611721

应该不是权限的问题.. 看是否是版本的问题.

上面的读取没问题 建议下载下来看看读取你的xls看是否保存


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明NPOI读取excel2003 错误 block[2] already removed