转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

简介:

引言

项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下。

方案一

NPOI

NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。
使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。

优势

(一)传统操作Excel遇到的问题:
1、如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机。
2、Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123。
3、导出时,如果字段内容以“-”或“=”开头,Excel会把它当成公式进行,会报错。
4、Excel会根据Excel文件前8行分析数据类型,如果正好你前8行某一列只是数字,那它会认为该列为数值型,自动将该列转变成类似1.42702E+17格式,日期列变成包含日期和数字的。
(二)使用NPOI的优势
1、您可以完全免费使用该框架
2、包含了大部分EXCEL的特性(单元格样式、数据格式、公式等等)
3、专业的技术支持服务(24*7全天候) (非免费)
4、支持处理的文件格式包括xls, xlsx, docx.
5、采用面向接口的设计架构( 可以查看 NPOI.SS 的命名空间)
6、同时支持文件的导入和导出
7、基于.net 2.0 也支持xlsx 和 docx格式(当然也支持.net 4.0)
8、来自全世界大量成功且真实的测试Cases
9、大量的实例代码
11、你不需要在服务器上安装微软的Office,可以避免版权问题。
12、使用起来比Office PIA的API更加方便,更人性化。
13、你不用去花大力气维护NPOI,NPOI Team会不断更新、改善NPOI,绝对省成本。
NPOI之所以强大,并不是因为它支持导出Excel,而是因为它支持导入Excel,并能“理解”OLE2文档结构,这也是其他一些Excel读写库比较弱的方面。通常,读入并理解结构远比导出来得复杂,因为导入你必须假设一切情况都是可能的,而生成你只要保证满足你自己需求就可以了,如果把导入需求和生成需求比做两个集合,那么生成需求通常都是导入需求的子集,这一规律不仅体现在Excel读写库中,也体现在pdf读写库中,目前市面上大部分的pdf库仅支持生成,不支持导入。

构成

 NPOI 1.2.x主要由POIFS、DDF、HPSF、HSSF、SS、Util六部分组成。

NPOI.POIFS
OLE2/ActiveX文档属性读写库
NPOI.DDF
Microsoft Office Drawing读写库
NPOI.HPSF
OLE2/ActiveX文档读写库
NPOI.HSSF
Microsoft Excel BIFF(Excel 97-2003)格式读写库
NPOI.SS
Excel公用接口及Excel公式计算引擎
NPOI.Util
基础类库,提供了很多实用功能,可用于其他读写文件格式项目的开发
  NPOI组成部分
NPOI 1.x的最新版为NPOI 1.2.5,其中包括了以下功能:
1、读写 OLE2文档
2、读写 DocummentSummaryInformationSummaryInformation
3、基于 LittleEndian的字节读写
4、读写 Excel BIFF格式
5、识别并读写 Excel BIFF中的常见 Record,如RowRecord, StyleRecord, ExtendedFormatRecord
6、支持设置单元格的高、宽、样式等
7、支持调用部分 Excel内建函数,比如说 sum, countif以及计算符号
8、支持在生成的 XLS内嵌入打印设置,比如说横向/纵向打印、缩放、使用的纸张等。
NPOI 2.0主要由SS, HPSF, DDF, HSSF, XWPF, XSSF, OpenXml4Net, OpenXmlFormats组成,具体列表如下:
Assembly名称 模块/命名空间 说明
NPOI.DLL
NPOI.POIFS
OLE2/ActiveX文档属性读写库
NPOI.DLL
NPOI.DDF
微软Office Drawing读写库
NPOI.DLL
NPOI.HPSF
OLE2/ActiveX文档读写库
NPOI.DLL
NPOI.HSSF
微软Excel BIFF(Excel 97-2003, doc)格式读写库
NPOI.DLL
NPOI.SS
Excel公用接口及Excel公式计算引擎
NPOI.DLL
NPOI.Util
基础类库,提供了很多实用功能,可用于其他读写文件格式项目的开发
NPOI.OOXML.DLL NPOI.XSSF Excel 2007(xlsx)格式读写库
NPOI.OOXML.DLL NPOI.XWPF Word 2007(docx)格式读写库
NPOI.OpenXml4Net.DLL NPOI.OpenXml4Net OpenXml底层zip包读写库
NPOI.OpenXmlFormats.DLL NPOI.OpenXmlFormats 微软Office OpenXml对象关系库

(以上内容来自百度百科)从上表可知NPOI组件已支持excel2007,记得之前用的时候只支持excel2003。很久没研究过这玩意儿了。

案例

 官网地址:http://npoi.codeplex.com/,可以从官网下载NPOI2.X版本的。

 首先引入

ICSharpCode.SharpZipLib.dll

NPOI.dll

NPOI.OOXML.dll

NPOI.OpenXml4Net.dll

NPOI.OpenXmlFormats.dll

然后引入命名空间:

using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;

      辅助类

  NPOIExcelHelper

参考:http://www.cnblogs.com/Joetao/articles/3247909.html

测试结果

导入Excel,student.xlsx

导入DataTable,这里只将数据导入DataTable,导入数据库部分,就不再写了。

测试数据,向qq群里一朋友要的。大概有5w多条,lz机子是老爷机跑不起,只导出了其中的1k条。

方案二

利用office的com组件

首先添加com引用

引入命名空间

using Excel = Microsoft.Office.Interop.Excel;

 Com操作Excel辅助类

参考:http://www.cnblogs.com/waxdoll/archive/2005/10/28/264071.html

DataTable导入Excel

Excel读入DataTable

这里未对类型进行处理,datetime类型的数据会转换成数值类型的

方案三

将Excel数据表当作数据源,通过 OleDb来实现。

同样需要引入Microsoft Excel 14.0 Object Library

 分享一个操作类:

网上搜集的常用类,这里不再测试。

方案四

将Excel另存为xml文件,对xml文件进行操作。

复制代码
复制代码
 1 <Row>
 2     <Cell><Data ss:Type="String">998</Data></Cell>
 3     <Cell><Data ss:Type="String">柳雪巧</Data></Cell>
 4     <Cell><Data ss:Type="String">f</Data></Cell>
 5     <Cell><Data ss:Type="String">1971/4/30 0:00:00</Data></Cell>
 6     <Cell><Data ss:Type="String">2005/1/15 0:00:00</Data></Cell>
 7     <Cell><Data ss:Type="String">台湾省  屏东县</Data></Cell>
 8     <Cell><Data ss:Type="String">Dolores19710430@139.com</Data></Cell>
 9     <Cell><Data ss:Type="String">12616310511</Data></Cell>
10     <Cell><Data ss:Type="String">False</Data></Cell>
11     <Cell><Data ss:Type="String">2014/3/15 10:13:54</Data></Cell>
12     <Cell><Data ss:Type="String">5</Data></Cell>
13    </Row>
复制代码
复制代码

excel表格中每一行数据,其实是以上格式的xml,有规律,就可以很容易的去解析。

方案五

 js插件

官网地址:http://datatables.net/extras/tabletools/

 

方案六

导出为csv文件

分享一个辅助类

不再测试。

方案七

使用模版的方式,最简单的模版,就是将表头列出,然后再导入数据。第一行为表头,从第二行开始写入数据。导入过程可参考前面的解决方案。

方案八

使用Aspose.Cells组件,貌似收费。

可参考:http://www.cnblogs.com/lanyue52011/p/3372452.html

http://www.cnblogs.com/hongjiumu/archive/2013/03/15/2962277.html

http://www.cnblogs.com/wujy/archive/2012/07/19/2600162.html

方案九

OpenXML

 OpenXML库:DocumentFormat.OpenXml.dll;

 参考:http://www.cnblogs.com/zlgcool/archive/2008/12/31/1365993.html

http://blog.sina.com.cn/s/blog_46e9573c01011bvs.html

总结

列出常见的几种解决方案,在实际项目中,用哪一种,还是根据项目环境来决定吧。

最近项目中用到了Excel导出,导入的功能,就想着将常见的方式总结一下。也许还有遗漏,请留言,将你知道也分享给大家,谢谢。

如果该文章对你有所帮助,不妨推荐一下,让更多的人知道,毕竟分享是件快乐的事情。

代码下载:链接:http://pan.baidu.com/s/1dD3lleT 密码:axli

分类:  ASP.NET
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/3618732.html ,如需转载请自行联系原作者
相关文章
|
3月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
416 10
|
15天前
|
分布式计算 Hadoop 大数据
从Excel到Hadoop:数据规模的进化之路
从Excel到Hadoop:数据规模的进化之路
44 10
|
5月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
405 3
|
3月前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
4月前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
4月前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
58 1
|
4月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
5月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
294 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
4月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
4月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。

热门文章

最新文章