.Net 使用NPOI 实现Excel的简单导入导出 - Ran0 - 博客园

//创建不同版本的文件, excel2003版 或2007+版

public IWorkbook BuildWorkbook(DataTable dt, string file)
    {
        IWorkbook book;

string fileExt = Path.GetExtension(file).ToLower();

if (fileExt == ".xlsx")
        { book = new XSSFWorkbook(); }
        else if (fileExt == ".xls")
        { book = new HSSFWorkbook(); }
        else { book = null; }

//var book = new HSSFWorkbook();

ISheet sheet1 = book.CreateSheet("Sheet1");
        ISheet sheet2 = book.CreateSheet("Sheet2");

//填充数据
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            if (i < 65536)
            {
                IRow drow = sheet1.CreateRow(i);
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    ICell cell = drow.CreateCell(j, CellType.String);
                    cell.SetCellValue(dt.Rows[i][j].ToString());
                }
            }
            if (i >= 65536) //再创建一个sheet
            {
                IRow drow = sheet2.CreateRow(i - 65536);
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    ICell cell = drow.CreateCell(j, CellType.String);
                    cell.SetCellValue(dt.Rows[i][j].ToString());
                }
            }
        }

//自动列宽
        for (int i = 0; i <= dt.Columns.Count; i++)
        {
            sheet1.AutoSizeColumn(i, true);
            sheet2.AutoSizeColumn(i, true);
        }
        return book;
    }

//导出至excel文件

public void ExportExcel(DataTable dt, string fileName = "")
    {
        ////////生成Excel
        IWorkbook book = BuildWorkbook(dt, fileName);

//web 下载
        if (fileName == "")
            fileName = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now) + ".xls";

fileName = fileName.Trim();

HttpResponse httpResponse = HttpContext.Current.Response;
        httpResponse.Clear();
        httpResponse.Buffer = true;
        httpResponse.Charset = Encoding.UTF8.BodyName;
        httpResponse.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
        httpResponse.ContentEncoding = Encoding.UTF8;
        httpResponse.ContentType = "application/vnd.ms-excel; charset=UTF-8";

book.Write(httpResponse.OutputStream);
        httpResponse.End(); 
    }

原文地址:https://www.cnblogs.com/sophy87/p/9268490.html

时间: 2024-11-08 23:06:52

.Net 使用NPOI 实现Excel的简单导入导出 - Ran0 - 博客园的相关文章

C# 使用NPOI 实现Excel的简单导入导出

private void btnImport_Click(object sender, EventArgs e) { DataSet ds = new DataSet(); DataTable dt = null; OpenFileDialog sflg = new OpenFileDialog(); sflg.Filter = "Excel(*.xls)|*.xls|Excel(*.xlsx)|*.xlsx"; if (sflg.ShowDialog() == System.Wind

简单爬虫-抓取博客园文章列表

原文:简单爬虫-抓取博客园文章列表 如果使用对方网站数据,而又没有响应的接口,或者使用接口不够灵活的情况下,使用爬虫在合适不过了.爬虫有几种,对方网站展示形式有几种都是用分析,每个网站展示有相似的地方,有不同的地方. 大部分使用httpRequst就能完成,不管是否添加了口令.随即码.请求参数.提交方式get或者post.地址来源.多次响应等等.但是有些网站使用ajax如果是返回json或固定格式的也好处理,如果是很复杂的,可以使用webbrower控件进行抓取,最后正则解析,获取所需要的数据即

简单两步让博客园支持手机端显示

博客园的模板是没有兼容手机端显示的,阅读体验比较差.本文教你如何简单几步让你的博客支持手机端显示.找一个夜深人静,没有人浏览你博客的时间点,开始吧. 1.添加js代码 在博客园后台的“设置”菜单下,有一项页首Html代码,此处写js代码也是可以生效的,将如下代码复制过去: <script> var content = 'width=device-width, initial-scale=1 user-scalable=no'; var viewport = document.createEle

使用phpExcel实现Excel数据的导入导出(完全步骤)

使用phpExcel实现Excel数据的导入导出(完全步骤) 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人研究phpExcel的使用例程总结出来的使用方法,接下来直接进入正题. 首先先说一下,本人的这段例程是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方法,很多人可能不能正确的实现Excel的导入导出,问题基本上都是phpExcel的核心类引用路径出错,如果有问题大家务必要对路劲是否引用

SSM excel文件的导入导出

对于excel文件的导入导出,后台接收读取和建表封存都是固定死的,所以对于excel导入时,excel文件内容必须匹配后台相关对象,不然报错. excel文件导出,用<a><a/>标签即可,通过后台去完成 ,不可用ajax去写导出,ajax请求只是个"字符型"的请求,即请求的内容是以文本类型存放的. 文件的下载是以二进制形式进行的,ajax没法解析后台返回的文件流,所以无法处理二进制流response输出来下载文件. 当获取前台导入这个命令后,会通过Mybati

在Python中用Request库模拟登录(二):博客园(简单加密,无验证码)

源代码分析 博客园的登录页面非常简单,查看网页源代码,可以发现两个输入框的id分别为input1.input2,复选框的id为remember_me,登录按钮的id为signin. 还有一段JavaScript代码,下面来简单分析一下. 先来看$(function(){});函数: 1 $(function () { 2 $('#signin').bind('click', function () { 3 signin_go(); 4 }).val('登 录'); 5 }); $(functio

第一次来博客园先用jquery写一个简单菜单收缩效果

<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title>    <script src="jquery-1.7.2.min.js"></script&g

简单改造丨让你的博客园焕然一新

一直想弄一个blog. 主流的有csdn.博客园,csdn上广告太多,有时候必须得登录才能看到一些内容,让我非常反感.相比之下,博客园则清爽很多,使用了一段时间,但还是觉得不便.主要是上传文章经常会有格式问题,其次就是博客园的界面太老旧了. 后来就尝试在github pages上搭建Jekyll.Hexo,很geek,玩法很多.但要我自己维护还是有点折腾,我只想要一个写东西的地方,看得顺眼就行. 之后,我无意发现博客园的主题也是支持定制的,让我眼前一亮.这里贴一个教程.[详细图解]一步一步教你自

给博客园编辑器完善个插件及简单产品化工作

我的需求是这样的,平时使用有道来写笔记(分享方便 ),同时如果有些文章觉得比较适合公开的话会考虑放到博客园进行分享.尝试了找了一些方法发现能在浏览器里拷贝有道的文章并粘贴到博客园的编辑器里.但这种方法对于图片有个缺陷就是文章里的图片是使用有道的链接,我不想因为有道链接可能失效从而影响我整篇文章的阅读. 但是翻遍了互联网也没找到方便的自动上传的工具(有些可能因为写的比较早不能匹配现在的插件或域名了),所以只能自己开发来解决了.好在程序员有个习惯就是分享源码,于是打算在 https://github