HSSFWorkbook这个好像不能操作office2007,谁有好办法,写一段
c#中导入excel文件,之后放到集合中的代码给我呀!查了好久的谷歌和百度都没找出来,我笨死了,呜呜呜
我已经找到了方法,但是,报错呀,
Count = “xssfworkbook.Count”引发了“System.NotImplementedException”类型的异常
出现这种错误,代码我贴出来,主要就是在
xssfworkbook = new XSSFWorkbook(file);时候出现上述那种错误,我不知道为什么
难道 搜索 C#操作Excel 不行吗
我搜了呀,哎,不知道是不是npoi的版本太低了,让他不能操作office2007,烦死了
@魔女小溪:
/// <summary> /// 获取Excel数据 /// </summary> /// <param name="fileName"></param> /// <returns></returns> public DataSet GetExcelData(string fileName,string workSheetName) { //连接字符串 HDR=Yes;查询数据包含数据行;"IMEX=1;" 将excel cell 內含值视为 text string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\""+fileName+"\";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""; //查询字符串 string sql = "select * from ["+workSheetName+"$] "; DataSet ds = new DataSet(); OleDbConnection conn = new OleDbConnection(connString); try { OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn); conn.Open(); adapter.Fill(ds); } catch (Exception ex) { throw new Exception("获取Excel数据出错:" + ex.Message.ToString()); } finally { if (conn.State == ConnectionState.Open) { conn.Close(); } } return ds; }
试下
1、首先,如果你的数据量不大,那么使用NPOI2.0+中的XSSF是可以操作的;
2、再者,你可以尝试下Epplus;
3、Aspose.Cell效果好,不过要收费。
哎呀,帅哥,终于找了一个懂我意思的人了,你可不可以给我一个npoi2.0,并且帮我写这代码呀,我把豆豆给你,呜呜呜
@魔女小溪:
1、哥不帅...
2、NPOI地址:npoi.codeplex.com,这里面可以下载最新的,目前作者已将项目迁移到github了;
3、代码,还是要自己写滴,这个写起来也很简单。
@幻天芒: 哥不帅,你就不能帮我写下吗?哎,今天不想做了,还是明天做吧,我发现我这脑袋今天不好
@幻天芒: 哥不帅,你qq是多少呀,我加你qq吧,我还有要问你的
Stopwatch watch = Stopwatch.StartNew(); Console.WriteLine("------NPOI------"); Console.WriteLine("{0}\tStart...", watch.ElapsedMilliseconds); var reader = DataSource.GetExportData(66); using (reader) { IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet(); IRow headerRow = sheet.CreateRow(0); int cellCount = reader.FieldCount; string columnName = string.Empty; int rowIndex = 0; while (reader.Read()) { IRow dataRow = sheet.CreateRow(rowIndex); for (int i = 0; i < cellCount; i++) { dataRow.CreateCell(i).SetCellValue(reader[i].ToString()); } rowIndex++; if (rowIndex % 10000 == 0) { Console.WriteLine("{0}\t{1}", watch.ElapsedMilliseconds, rowIndex); } } MemoryStream ms = new MemoryStream(); workbook.Write(ms); using (FileStream fs = new FileStream("NPOI.xlsx", FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); } } Console.WriteLine("{0}\tEnd...", watch.ElapsedMilliseconds); watch.Stop();
以前写的测试代码,上百万条,这货压根吃不住。
@幻天芒: 哥不帅,我觉得还是代码自己写的好,现在,我想要问你一些别的,把你qq献上,快点!拜托啦,
@魔女小溪: 工作时间,你觉得我能上QQ?...one zero two eight double three double two seven three!
@幻天芒: 那就闪存里面的短消息里面聊吧,呵呵
@幻天芒: double three,我滴神
@魔女小溪: 小学没毕业,然后英语1级,见笑了~
odbc