1,不是用第三方插件(html直接输出)

StringBuilder ssb = new StringBuilder();
StringBuilder sb = new StringBuilder();
sb.AppendFormat(@"<html>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<body>
<table border='1'>
<tr>
<td align='center' colspan='1'>运单信息</td>
<td align='center' colspan='4'>收件人信息</td>
<td align='center' colspan='3'>托寄物信息</td>
<td align='center' colspan='2'>保价信息</td>
<td align='center' colspan='1'>订单金额</td>
<td align='center' colspan='1'>服务类型</td>
<td align='center' colspan='1'>运单备注</td>
<td align='center' colspan='1'>配送业务类型</td>
<td align='center' colspan='1'>运单信息</td>
</tr>
<tr>
<td>关联订单</td>
<td>姓名</td>
<td>手机</td>
<td>座机</td>
<td>地址</td>
<td>物品内容</td>
<td>包裹数量</td>
<td>重量(kg)</td>
<td>保价</td>
<td>保价金额(元)</td>
<td>订单金额(元)</td>
<td>代收货款</td>
<td>备注信息</td>
<td>配送业务类型</td>
<td>京东订单号</td>
</tr>{0}
</table>
</body>
</html>", ssb); string excelHtml = sb.ToString();// context.Request["excelHtml"];
string name = DateTime.Now.ToString();
context.Response.Buffer = true;
//输出的应用类型
context.Response.ContentType = "application/vnd.ms-excel";
//设定编码方式,若输出的excel有乱码,可优先从编码方面解决
context.Response.Charset = "utf-8";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
//filenames是自定义的文件名
context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + name + ".xls");
//content是步骤1的html,注意是string类型
context.Response.Write(excelHtml);
context.Response.End();

2,使用NPOI(管理NuGet程序包→搜索NPOI安装),也可以去NPOI官网下载引用

/// <summary>
/// 导出excel(使用NPOI的方式)
/// </summary>
/// <param name="DT"></param>
public string ExportExcel(string ids)
{
try
{
DataTable DT = mallData.GetOrderListByIds(ids);
string path = AppDomain.CurrentDomain.BaseDirectory;
HSSFWorkbook hssfworkbookDown;
string modelExlPath = path + "attachments/excel/import.xls";
if (File.Exists(modelExlPath) == false)//模板不存在
{
return null;
}
using (FileStream file = new FileStream(modelExlPath, FileMode.Open, FileAccess.Read))
{
hssfworkbookDown = new HSSFWorkbook(file);
file.Close();
}
if (DT.Rows.Count > )
{
WriterExcel(hssfworkbookDown, , DT); string filename = DateTime.Now.ToString("yyyyMMddHHmmss")+LibSysUtils.NewRefId().ToString().Substring(,)+".xls";
string strFilePath = path + "attachments/excel";
if (Directory.Exists(strFilePath) == false)
{
Directory.CreateDirectory(strFilePath);
}
strFilePath = strFilePath + "/" + filename;
FileStream files = new FileStream(strFilePath, FileMode.Create);
hssfworkbookDown.Write(files);
files.Close();
if (File.Exists(strFilePath) == false)//附件生成失败
{
return null;
} return strFilePath;
}
}
catch (Exception ex)
{ }
return null;
}
/// <summary>
/// 写入Excel
/// </summary>
/// <param name="hssfworkbookDown"></param>
/// <param name="sheetIndex"></param>
/// <param name="DT"></param>
public void WriterExcel(HSSFWorkbook hssfworkbookDown, int sheetIndex, DataTable DT)
{
try
{
#region 设置单元格样式
//字体
HSSFFont fontS9 = (HSSFFont)hssfworkbookDown.CreateFont();
fontS9.FontName = "Arial";
fontS9.FontHeightInPoints = ;
fontS9.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.NORMAL;
//表格
ICellStyle TableS9 = (ICellStyle)hssfworkbookDown.CreateCellStyle();
TableS9.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;
TableS9.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;
TableS9.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
TableS9.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;
TableS9.WrapText = true;
TableS9.SetFont(fontS9);
#endregion HSSFSheet sheet = (HSSFSheet)hssfworkbookDown.GetSheetAt(sheetIndex);
hssfworkbookDown.SetSheetHidden(sheetIndex, false);
hssfworkbookDown.SetActiveSheet(sheetIndex); int n = ;//因为模板有表头,所以从第3行开始写
for (int j = ; j < DT.Rows.Count; j++)
{
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(j + n);
dataRow.CreateCell();
dataRow.Cells[].SetCellValue(DT.Rows[j]["order_id"].ToString());
dataRow.CreateCell();
dataRow.Cells[].SetCellValue(DT.Rows[j]["consignee_name"].ToString());
dataRow.CreateCell();
dataRow.Cells[].SetCellValue(DT.Rows[j]["consignee_tel"].ToString());
dataRow.CreateCell();
dataRow.Cells[].SetCellValue("");
dataRow.CreateCell();
dataRow.Cells[].SetCellValue(DT.Rows[j]["consignee_address"].ToString());
dataRow.CreateCell();
dataRow.Cells[].SetCellValue("");
dataRow.CreateCell();
dataRow.Cells[].SetCellValue();
dataRow.CreateCell();
dataRow.Cells[].SetCellValue();
dataRow.CreateCell();
dataRow.Cells[].SetCellValue("否");
dataRow.CreateCell();
dataRow.Cells[].SetCellValue();
dataRow.CreateCell();
dataRow.Cells[].SetCellValue();
dataRow.CreateCell();
dataRow.Cells[].SetCellValue("否");
dataRow.CreateCell();
dataRow.Cells[].SetCellValue("");
dataRow.CreateCell();
dataRow.Cells[].SetCellValue("普通");
dataRow.CreateCell();
dataRow.Cells[].SetCellValue(""); for (int i = ; i <= ; i++)//循环列,添加样式
{
dataRow.Cells[i].CellStyle = TableS9;
}
}
//设定第一行,第一列的单元格选中
sheet.SetActiveCell(, );
}
catch (Exception ex)
{
}
}

模板格式如下:

c# 导出excel的两种常见方法的更多相关文章

  1. jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)

    在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下. [WebMethod] public static string SayHe ...

  2. vue中this.$router.push()路由传值和获取的两种常见方法

    1.路由传值   this.$router.push() (1) 路由跳转使用router.push()方法,这个方法会向history栈添加一个新纪录,所以,当用户点击浏览器后退按钮时,会回到之前的 ...

  3. jdbc至sql server的两种常见方法

    Statement和prepareStatement sql server中已建立BookPhone数据库,包含bookPhone表,eclipse中有BookPhone类,三个string类型的值 ...

  4. html笔记04:在html之中导入css两种常见方法

    1.导入式: <html> <head> <title></title> <style type="text/css"> ...

  5. .NET导出Excel的四种方法及评测

    .NET导出Excel的四种方法及评测 导出Excel是.NET的常见需求,开源社区.市场上,都提供了不少各式各样的Excel操作相关包.本文,我将使用NPOI.EPPlus.OpenXML.Aspo ...

  6. [转帖].NET导出Excel的四种方法及评测

    .NET导出Excel的四种方法及评测 https://www.cnblogs.com/sdflysha/p/20190824-dotnet-excel-compare.html 导出Excel是.N ...

  7. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  8. SQL Server 导出Excel有换行的解决方法

    参考地址::https://vcoo.cc/blog/1234/ 从 SQL Server 查询结果中复制结果数据粘贴到 Excel 中存在这么个问题:如果字段内容中有换行符,那么粘贴到 Excel ...

  9. angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用

    今天我们要讲的是ng2的路由系统. 例子

随机推荐

  1. Java 9 新特性 – 内部类的方块操作符

    方块操作符 ( <> ) 在 Java 7 中就引入了,目的是为了使代码更可读. 但是呢,这个操作符一直不能在匿名内部类中使用 Java 9 修正了这个问题,就是可以在匿名内部类中使用方块 ...

  2. mvn相关介绍和命令

    1.前言 Maven,发音是[`meivin],"专家"的意思.它是一个很好的项目管理工具,很早就进入了我的必备工具行列,但是这次为了把project1项目完全迁移并应用maven ...

  3. python3之urllib基础

    urllib简单应用html=urllib.request.urlopen(域名/网址).read().decode('utf-8')----->--->urlopen-->获取源码 ...

  4. Hexo博客部署

    前些天使用wordpress程序搭建了个人网站,但感觉太重比较适合个人空间,所以这次介绍Hexo搭建免费博客,先提供官网给大家英文版的请点击这里,中文版的请点击这里,在安装一个Git,再是github ...

  5. VRRP笔记二:配置keepalived为实现haproxy高可用的配置文件示例

    ! Configuration File for keepalived global_defs { notification_email { linuxedu@foxmail.com mageedu@ ...

  6. 签章新的pom文件

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  7. 《JavaScript算法》常见排序算法思路与代码实现

    冒泡排序 通过相邻元素的比较和交换,使得每一趟循环都能找到未有序数组的最大值或最小值. 最好:O(n),只需要冒泡一次数组就有序了. 最坏: O(n²) 平均: O(n²) *单项冒泡 functio ...

  8. <HAOI2008>硬币购物

    和神奇dp的战斗 还有容斥原理 终于get到了 #include<cstdio> #include<cstring> #include<iostream> #inc ...

  9. HashMap底层分析

    以下基于 JDK1.7 分析. 如图所示,HashMap 底层是基于数组和链表实现的.其中有两个重要的参数: 容量 负载因子 容量的默认大小是 16,负载因子是 0.75,当 HashMap 的 si ...

  10. MySQL树形结构的数据库表设计和查询

    1.邻接表(Adjacency List) 实例:现在有一个要存储一下公司的人员结构,大致层次结构如下: 那么怎么存储这个结构?并且要获取以下信息: 1.查询小天的直接上司. 2.查询老宋管理下的直属 ...