您的位置:首页 > 其它

读取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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: