读取Excel的内容,实现数据批量上传(转)
2010-02-02 09:18
253 查看
企业应用中经常会遇到批量上传数据的需求,客户要求使用excel表格录入一批数据,然后通过网页上传该excel表格,实现批量导入数据。这样的需求其实主要就是处理Excel表格,把Excel表格中的内容读取出来后,做一些必要的校验,然后上传校验成功的数据,返回失败数据的行号以及校验失败的信息。
如何读取Excel表格,网上已经有很多方法,有些是通过oledb,有些是通过第三方组件。我参考了网上的一些代码,加上自己的封装,给大家提供一个改良后的版本。当然,为了做到通用,我没有使用oledb的方式,而是使用了一个第三方组件。使用第三方组件的原因很简单,因为有些服务器不一定安装Excel,有些连oledb提供程序都没有,所以哦,还是用第三方组件比较能够通吃。
这个第三方组件叫做koogra,.NET实现的开源组件,比较好用。这里是koogra项目地址:http://sourceforge.net/projects/koogra/
好了,开始我们的封装过程,为了好用我希望的方式是四种,返回的结果都是DataTable对象。
1:传入的参数包括工作簿地址、工作表名称;
2:传入的参数包括工作簿地址、工作表的索引(0表示第一个工作表);
3:传入的参数包括内存流、工作表名称;
4:传入的参数包括内存流、工作表的索引(0表示第一个工作表)。
ok,开始上代码,记得项目要引用Ionic.Utils.Zip.dll和Net.SourceForge.Koogra.dll
代码
if (fileUpload1.HasFile)
{
DataTable dt = null;
try
{
using (System.IO.MemoryStream stream = new System.IO.MemoryStream(fileUpload1.FileBytes))
{
dt = Gren.Framework.Office.ExcelUtils.TranslateToTable(stream, "sheet1");
}
//得到DataTable对象后,做你自己的处理
}
catch (Exception ex)
{
lblMessage.Text = "<p><span class=\"c_red ft_bold\">处理数据文件错误:</span></p>";
lblMessage.Text += "<div class=\"c_red\">" + Server.HtmlEncode(ex.Message) + "</div>";
}
}
else
{
lblMessage.Text = "<p><span class=\"c_red ft_bold\">请选择数据文件</span></p>";
}
直接用内存流来处理上传的文件还是比较快的,大家试试吧,有什么问题记得给我留言。或者大家帮我优化增强后,也请告诉我,共同进步嘛。
测试项目:ExcelUtils.zip
如何读取Excel表格,网上已经有很多方法,有些是通过oledb,有些是通过第三方组件。我参考了网上的一些代码,加上自己的封装,给大家提供一个改良后的版本。当然,为了做到通用,我没有使用oledb的方式,而是使用了一个第三方组件。使用第三方组件的原因很简单,因为有些服务器不一定安装Excel,有些连oledb提供程序都没有,所以哦,还是用第三方组件比较能够通吃。
这个第三方组件叫做koogra,.NET实现的开源组件,比较好用。这里是koogra项目地址:http://sourceforge.net/projects/koogra/
好了,开始我们的封装过程,为了好用我希望的方式是四种,返回的结果都是DataTable对象。
1:传入的参数包括工作簿地址、工作表名称;
2:传入的参数包括工作簿地址、工作表的索引(0表示第一个工作表);
3:传入的参数包括内存流、工作表名称;
4:传入的参数包括内存流、工作表的索引(0表示第一个工作表)。
ok,开始上代码,记得项目要引用Ionic.Utils.Zip.dll和Net.SourceForge.Koogra.dll
代码
if (fileUpload1.HasFile)
{
DataTable dt = null;
try
{
using (System.IO.MemoryStream stream = new System.IO.MemoryStream(fileUpload1.FileBytes))
{
dt = Gren.Framework.Office.ExcelUtils.TranslateToTable(stream, "sheet1");
}
//得到DataTable对象后,做你自己的处理
}
catch (Exception ex)
{
lblMessage.Text = "<p><span class=\"c_red ft_bold\">处理数据文件错误:</span></p>";
lblMessage.Text += "<div class=\"c_red\">" + Server.HtmlEncode(ex.Message) + "</div>";
}
}
else
{
lblMessage.Text = "<p><span class=\"c_red ft_bold\">请选择数据文件</span></p>";
}
直接用内存流来处理上传的文件还是比较快的,大家试试吧,有什么问题记得给我留言。或者大家帮我优化增强后,也请告诉我,共同进步嘛。
测试项目:ExcelUtils.zip
相关文章推荐
- 读取Excel的内容,实现数据批量上传
- 读取Excel的内容,实现数据批量上传
- 基于Spring3 MVC实现基于form表单上传Excel文件,批量导入数据时,报错:Unable to recognize OLE stream !
- VC6.0 ADO 读取Excel 2003内容,并将读取的数据上传到远程服务器SQL2008表中
- 基于Spring MVC实现基于form表单上传Excel文件,批量导入数据
- asp.net使用组件koogra读取Excel数据批量上传导入
- 用jxl.jar实现excel中的数据批量上传
- 上传excel文件实现批量导入数据及导出数据为excel文件
- asp.net使用组件koogra读取Excel数据批量上传导入
- 基于Spring3 MVC实现基于form表单上传Excel文件,批量导入数据!
- Redis 使用 Lua 实现 split 结合 HMGET 批量读取数据
- 在实现从excel中读取数据作为接口参数遇到的问题
- ASP.NET控件FileUpload实现Excel文件内容上传到数据库
- 用java实现excel数据批量导入数据库
- 将后台数据读取到前台的EXCEL文件中去,用javascript实现,asp.net,javacript(发一个原创)
- Java实现读取Excel(.xlsx)数据
- Proc 实现批量数据读取 cursor
- C#实现使用form上传Excel文件,导入Excel数据到SQL SERVER数据库
- SpringMVC简单实现上传Excel文件,并将Excel中的数据导入数据库
- golang实现读取当前所在文件夹里面的txt数据,去除空格,以列的形式保存在excel中