public void Export()
{ string fileName = "";
if (string.IsNullOrEmpty(fileName) == true)
{
fileName = DateTime.Now.ToString("yyyyMMdd");
}
string tmpPath = context.Server.MapPath("~/upfiles/") + "Template_" + DateTime.Now.Ticks + ".xlsx";
FileInfo file = new FileInfo(tmpPath);
//导出Excel
FileStream fs = new FileStream(tmpPath, FileMode.CreateNew, FileAccess.ReadWrite);
try
{
ExcelPackage package = new ExcelPackage(fs);
DataSet ds = new DataSet();
//接收最后结果
string drResult = string.Empty;
DataTable dt = pmt.GetMyTaskList().Tables[];
#region 这一块是因为公司有个需求 要在单元格内进行换行,有多少个\n就需要换多少行,如果没有这个需求的 就不用要这一段了。
foreach (DataRow dr in dt.Rows) {
string [] st4=dr["approvalInfo"].ToString().Split(new string[] { "\\n" }, StringSplitOptions.None);
for(int i = ; i < st4.Length; i++)
{
drResult += st4[i] + " " + System.Environment.NewLine; //换行的关键字,这一句掉了 就没什么卵用了,为了这个换行,我差点没被逼死,这次就留着,我不想下次又找不到了。
}
dr["approvalInfo"] = drResult;
drResult = ""; }
#endregion
#region
ExcelWorksheet sheet2 = package.Workbook.Worksheets.Add("sheet1");
sheet2.DefaultColWidth = ;
sheet2.Cells.Style.Font.Name = "宋体";
sheet2.Cells.Style.Numberformat.Format = "@";
sheet2.Cells.Style.WrapText = true;
sheet2.Cells["A1"].LoadFromDataTable(dt, true); ///设置边框
sheet2.Cells[, , , dt.Columns.Count].Style.Fill.PatternType = ExcelFillStyle.Solid;
sheet2.Cells[, , , dt.Columns.Count].Style.Fill.BackgroundColor.SetColor(Color.LightGray); sheet2.Cells[, , , dt.Columns.Count].Style.Fill.PatternType = ExcelFillStyle.Solid;
sheet2.Cells[, , , dt.Columns.Count].Style.Fill.BackgroundColor.SetColor(Color.LightGray);
sheet2.Cells[, , dt.Rows.Count + , dt.Columns.Count].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
sheet2.Cells[, , dt.Rows.Count + , dt.Columns.Count].Style.Border.Left.Style = ExcelBorderStyle.Thin;
sheet2.Cells[, , dt.Rows.Count + , dt.Columns.Count].Style.Border.Right.Style = ExcelBorderStyle.Thin;
sheet2.Cells[, , dt.Rows.Count + , dt.Columns.Count].Style.Border.Top.Style = ExcelBorderStyle.Thin;
sheet2.Cells[, , dt.Rows.Count + , dt.Columns.Count].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
sheet2.Cells[, , dt.Rows.Count + , dt.Columns.Count].Style.ShrinkToFit = true;//自适应宽度
#endregion package.Save();
}
catch (Exception ex)
{
Logger.Log.Error("导出Excel错误:" + ex.ToString());
}
finally
{
fs.Close();
} byte[] data = null; FileStream steam = File.Open(tmpPath, FileMode.Open, FileAccess.Read);
data = new byte[steam.Length];
int result = steam.Read(data, , data.Length);
if (data.Length <= )
data = new Byte[] { , };
steam.Close();
File.Delete(tmpPath); if (context.Request.UserAgent.ToLower().IndexOf("firefox") > -)
{
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment; filename*=\"" +
HttpUtility.UrlEncode(fileName + ".xlsx") + "\"");
}
else
{
HttpContext.Current.Response.AddHeader("Content-Disposition",
"inline; filename=" +
HttpUtility.UrlEncode(fileName + ".xlsx", System.Text.Encoding.UTF8));
}
HttpContext.Current.Response.AddHeader("Content-Length", data.Length.ToString());
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.BinaryWrite(data);
HttpContext.Current.Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}

单行读取的我就不写了网上多得很。 在写就有多多此一举了,  新人要不断摸索啊,我可是踩了半个月的坑,一个人日日夜夜的研究,才搞出来Epplus的图表和现在的单元格内换行啊,痛苦的不行,所以不能让你们太幸福了  哈哈~~~~~~~~~~~~~~~~~~~~~~~~~~

Epplus DataTable一次性导出的更多相关文章

  1. 从DataTable高效率导出数据到Excel

    首先从数据库读取数据到DataTable,这我就不提了,大家都明白.下面直接介绍如何从DataTable高效率导出数据到Excel中的方法,代码如下: using Microsoft.Office.I ...

  2. Excel催化剂开源第15波-VSTO开发之DataTable数据导出至单元格区域

    上篇提到如何从Excel界面上拿到用户的数据,另外反方向的怎样输出给用户数据,也是关键之处. VSTO最大的优势是,这双向的过程中,全程有用户的交互操作. 而一般IT型的程序,都是脱离用户的操作,只能 ...

  3. 【C#常用方法】3.将DataTable一次性插入数据库表中(使用SqlBulkCopy)

    将DataTable一次性插入数据库表中(使用SqlBulkCopy) 1.SqlBulkCopy简介 SqlBulkCopy类是ADO.NET中专门用于数据库批量插入数据的类,其批量插入的执行速度是 ...

  4. C#将DataTable数据导出CSV文件

    C#将DataTable数据导出CSV文件通用方法! //导出按钮调用导出方法    protected void btnCSV_Click(object sender, EventArgs e)   ...

  5. 利用 NUget包 EPPlus 实现数据导出到Excel(适用于DTcms)

    首先安装EPPlus 包

  6. DataTable数据导出CSV文件

    public static void SaveAsExcel(DataTable dt1) { //System.Windows.Forms.SaveFileDialog sfd = new Syst ...

  7. 带复杂表头合并单元格的HtmlTable转换成DataTable并导出Excel

    步骤: 一.前台JS取HtmlTable数据,根据设定的分隔符把数据拼接起来 <!--导出Excel--> <script type="text/javascript&qu ...

  8. 利用 NUget包 EPPlus 实现数据导出到Excel(适用于MVC)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvoAAABpCAIAAADEEBBGAAAJdElEQVR4nO3cy2ob5wLA8TxKnqTrrr

  9. 将DataTable内容导出到Excel表格的两种方法

    方法一:循环DataTable单元格内容拼接字符串,利用StreamWriter的Write方法将字符串写入Excel文件中 这种方法很实现很简单.拼接字符串时,每个单元格之间添加'\t'(表示一个占 ...

随机推荐

  1. LeetCode545.Boundary-of-Binary-Tree

    1.头节点为边界节点 2.叶结点为边界节点 3.如果节点在其所在的层中是最左边或最右边,那么也是边界节点. 思路:分成三部分来做:找左边界结点.叶结点.右边界结点. 找左边界结点要遍历root的左子树 ...

  2. nginx+apache动静分离/负载均衡

    [主从] [Mysql-Master] log-bin=mysql-bin server-id = MariaDB [(none)]> grant replication slave on *. ...

  3. Kubernetes 学习1 k8s架构概述

    一.概述 1.意思:舵手,飞行员 2.特点 a.自动装箱,自我修复,水平扩展,服务发现和负载均衡,自动发布和回滚. b.密钥和配置管理,存储编排,批量处理执行. 二.架构术语 1.集群 master( ...

  4. 修改pip安装源加快python模块安装

    用pip安装依赖包时默认访问https://pypi.python.org/simple/,但是经常出现不稳定以及访问速度非常慢的情况,国内厂商提供的pipy镜像目前可用的有: http://pypi ...

  5. 向量 dot cross product 点积叉积 几何意义

    向量 dot cross product 点积叉积 几何意义 有向量 a b 点积 a * b = |a| * |b| * cosθ 几何意义: 1. a * b == 0,则 a ⊥ b 2. a ...

  6. zoj3781

    zoj3781赛场上堵在了缩点上emmmmm把原始图相同颜色的方块缩成一个点,然后与它周围不同颜色的联通块连双向边,然后枚举每个点然后求最大深度的最小值因为每次翻转都相当于深度+1(可以手动模拟一下 ...

  7. Android高级工程师面试实战,您会挂么?

    xxx公司面试总结 面试形势 群聊(2个面试官+HR+自己) 面试流程 自我介绍 面试官根据你的介绍开始问 你对我们公司有什么想了解的么(复活卡,要时回到没有了也就没有了,可以让面试官给自己提一下建议 ...

  8. linux中python3安装和使用

    python安装 下载python安装包和依赖环境 #自由选择python3源码包的版本https://www.python.org/ftp/python/https://www.python.org ...

  9. echarts研究

    1.echarts是什么? 关键字:data visualization,canvas,chart Echarts是基于轻量级的canvas类库,纯javaScript实现,MVC封装,数据驱动,一款 ...

  10. C++ 控制台推箱子小游戏

              // 游戏菜单.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #in ...