c#将数据导入Excel另类方法

今天公司突然给个Excel模版,要将数据导入。这方法网上应该一搜一大把,但奇怪的是找了几种方法居然不理想。其中有一篇,大概是讲用模版且分页导出Excel。试了作者的例子。使用它提供的方法必须分页,每页25条,多了还不行。显示不符合我的要求。

使用ASP.NET中的DATAGRID控件可以使用导出Excel。但其导出的本质是Response一段HTML代码,并且设置输出类型为Excel即可。其实这种方法与控件没有关系,换言之,只要你设置了HTML代码,以Excel类型输出到页面,即可实现任意你想要的格式。

但现在的问题是这个格式 可能并不是你的HTML代码在页面上体现的形式,因为你定义的CSS可能输出到Excel它并不支持。那么怎么办呢?

我突然想到Excel要是有导出HTML功能岂不美栽?打开Excel。点击 文件。出现在菜单中 出现了 另存为网页。在接下来出现的对话框中 选择 工作表,而不要选择 整体工作薄,因为如果选择整个工作薄,这样导出后它会将CSS存为单独文件。我们稍后使用使用起来不便。

选择保存后,会生成一个单一的HTML文件,并且CSS样式都有,这里的CSS样式很重要,它在Excel中会得到支持。

然后我们可以读取这个HTML代码,需要注意的是,需要先把<html</html>这二个标记去掉。否则输出不了Excel。同时最好去掉这些代码中的JS代码。

然后你可以将你的数据读取放入到DataTable中,然后循环<tr>放入,即可!

下面给出一个示例代码。

 

Code

 

注意上面很多代码,并不是我一行行写的,这是很不明智的方法,HTML代码是从Excel是导出的,而一行行变成sb.Append形式是通过工具生成的。这工具不难,自己都可以写一个。注意上面//数据区域,是读取数据库,然后一行行循环。最后调用如下方式输出即可。

 

private void Page_Load(object sender, System.EventArgs e)
        {
            Response.Clear();
            Response.Buffer 
= true;
            Response.Charset 
= "GB2312";
            Response.ContentEncoding 
= System.Text.Encoding.GetEncoding("gb2312");//设置输出流为简体中文 
            Response.AppendHeader("Content-Disposition""attachment;filename=cnqsq.xls");

            Response.ContentType 
= "application/ms-excel";

            EnableViewState 
= false;
            Response.Write(data()); 
            Response.End();

        }

 

示例代码就不给出了,因为主要是方法。提供方法思路,相信实现起来并不难。

posted on 2008-09-21 23:04  冯岩  阅读(...)  评论(...编辑  收藏

导航