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. Spring注解式事务解析

    #Spring注解式事务解析 增加一个Advisor 首先往Spring容器新增一个Advisor,BeanFactoryTransactionAttributeSourceAdvisor,它包含了T ...

  2. mysql 删除所有表

    SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')FROM information_schema.tablesWHERE table_sch ...

  3. pyqt pyside QLineEdit 重写键盘事件

    pyqt pyside QLineEdit 重写键盘事件 def keyPressEvent(self, event): if (event.modifiers() & QtCore.Qt.S ...

  4. Linux中的 openssl-opensslv

    问题 在安装内核模块系统突然出现以下错误 寻找问题 一开始我以为是openssl没有安装,故先进行openssl的检查: 输入yum info openssl 从图中可知,openssl是已经安装过了 ...

  5. Beta(7/7)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  6. C++ STL常用容器浅析

    首先要理解什么是容器,在C++中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对象的指针,这种对象类型就叫做容器.简单来说 容器就是包含其他类的对象们的对象,当然这种(容器) ...

  7. 对迭代器操作的python 模块

    import itertools import more_itertools 目前用到的more_itertools.ilen(range(10)) --->返回可迭代的数量.这回消耗迭代,小心 ...

  8. __x__(3)0905第二天__W3C标准集合

    World Wide Web Consortium 万维网联盟(外语缩写:W3C)标准不是某一个标准,而是一系列标准的集合. 创建于 1994 年,是 Web 技术领域最具权威和影响力的国际中立性技术 ...

  9. Node.js_express_搭建一个服务器

    原生 node 服务器 1. 导入 node.js 核心模块  / 自带模块 :   http const http = require('http'); // HTTP 库所具有的功能已经赋给了 h ...

  10. cmd 命令 net start mongodb 启动不了,提示 net 不是内部命令或者外部命令

    1.要管理员的身份进入 cmd 2.右击我的电脑-->属性-->高级系统设置 3.选择高级-->环境变量 4.找到系统变量-->Path-->编辑 5.把 C:\wind ...