• 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();

            }

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

  • 相关阅读:
    Server2012R2 ADFS3.0 The same client browser session has made '6' requests in the last '13'seconds
    pig的grunt中shell命令不稳定,能不用尽量不用
    pig脚本的参数传入,多个参数传入
    pig的cogroup详解
    pig的limit无效(返回所有记录)sample有效
    Dynamics CRM2013 任务列表添加自定义按钮
    简述浏览器渲染机制
    如何区分浏览器类型
    使用mock.js生成前端测试数据
    理解Ajax
  • 原文地址:https://www.cnblogs.com/eflylab/p/1295580.html
Copyright © 2020-2023  润新知