首页 新闻 搜索 专区 学院

c#中导入excel文件,之后放到集合里面去,在存入数据库中

0
悬赏园豆:50 [已关闭问题] 解决于 2013-08-15 10:31

HSSFWorkbook这个好像不能操作office2007,谁有好办法,写一段
c#中导入excel文件,之后放到集合中的代码给我呀!查了好久的谷歌和百度都没找出来,我笨死了,呜呜呜

问题补充:

 

我已经找到了方法,但是,报错呀,

Count = “xssfworkbook.Count”引发了“System.NotImplementedException”类型的异常

出现这种错误,代码我贴出来,主要就是在

 xssfworkbook = new XSSFWorkbook(file);时候出现上述那种错误,我不知道为什么

View Code

 

View Code
魔女小溪的主页 魔女小溪 | 初学一级 | 园豆:38
提问于:2013-08-13 15:42
< >
分享
其他回答(2)
0

难道 搜索 C#操作Excel 不行吗

收获园豆:5
风醉 | 园豆:1197 (小虾三级) | 2013-08-13 15:49

我搜了呀,哎,不知道是不是npoi的版本太低了,让他不能操作office2007,烦死了

支持(0) 反对(0) 魔女小溪 | 园豆:38 (初学一级) | 2013-08-13 15:50

@魔女小溪: 

/// <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;
        }

试下

支持(0) 反对(0) 风醉 | 园豆:1197 (小虾三级) | 2013-08-13 15:56
0

1、首先,如果你的数据量不大,那么使用NPOI2.0+中的XSSF是可以操作的;

2、再者,你可以尝试下Epplus;

3、Aspose.Cell效果好,不过要收费。

收获园豆:5
幻天芒 | 园豆:36608 (高人七级) | 2013-08-13 15:54

哎呀,帅哥,终于找了一个懂我意思的人了,你可不可以给我一个npoi2.0,并且帮我写这代码呀,我把豆豆给你,呜呜呜

支持(0) 反对(0) 魔女小溪 | 园豆:38 (初学一级) | 2013-08-13 16:13

@魔女小溪: 

1、哥不帅...

2、NPOI地址:npoi.codeplex.com,这里面可以下载最新的,目前作者已将项目迁移到github了;

3、代码,还是要自己写滴,这个写起来也很简单。

支持(0) 反对(0) 幻天芒 | 园豆:36608 (高人七级) | 2013-08-13 16:17

@幻天芒: 哥不帅,你就不能帮我写下吗?哎,今天不想做了,还是明天做吧,我发现我这脑袋今天不好

支持(0) 反对(0) 魔女小溪 | 园豆:38 (初学一级) | 2013-08-13 16:20

@幻天芒: 哥不帅,你qq是多少呀,我加你qq吧,我还有要问你的

支持(0) 反对(0) 魔女小溪 | 园豆:38 (初学一级) | 2013-08-13 16:22
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();
以前写的测试代码,上百万条,这货压根吃不住。
支持(0) 反对(0) 幻天芒 | 园豆:36608 (高人七级) | 2013-08-13 16:23

@幻天芒: 哥不帅,我觉得还是代码自己写的好,现在,我想要问你一些别的,把你qq献上,快点!拜托啦,

支持(0) 反对(0) 魔女小溪 | 园豆:38 (初学一级) | 2013-08-13 16:24

@魔女小溪: 工作时间,你觉得我能上QQ?...one zero two eight double three double two seven three!

支持(0) 反对(0) 幻天芒 | 园豆:36608 (高人七级) | 2013-08-13 16:25

@幻天芒: 那就闪存里面的短消息里面聊吧,呵呵

支持(0) 反对(0) 魔女小溪 | 园豆:38 (初学一级) | 2013-08-13 16:26

@幻天芒: double three,我滴神

支持(0) 反对(0) 魔女小溪 | 园豆:38 (初学一级) | 2013-08-13 16:27

@魔女小溪: 小学没毕业,然后英语1级,见笑了~

支持(0) 反对(0) 幻天芒 | 园豆:36608 (高人七级) | 2013-08-13 16:29
0

odbc

小兵仔 | 园豆:1240 (小虾三级) | 2013-08-14 16:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册