1、工具类(applibrary.dll)

    public class ExcelHelper {
/// <summary>
/// 文件名
/// </summary>
public string fileName { get; set; }
/// <summary>
/// 工作簿列表
/// </summary>
public List<WorkSheet> workSheets { get; set; }
/// <summary>
/// Excel文档对象
/// </summary>
public XlsDocument doc { get; set; } public string message { get; set; } public ExcelHelper() {
doc = new XlsDocument();
workSheets = new List<WorkSheet>();
} /// <summary>
/// 导出Excel
/// </summary>
/// <returns></returns>
public bool ToExcel() {
if (string.IsNullOrEmpty(fileName)) {
message = "请输入文件名";
return false;
}
if (workSheets.Count == ) {
message = "请指定工作簿数据";
return false;
}
doc.FileName = fileName;
foreach (var workSheet in workSheets) {
AppLibrary.WriteExcel.Worksheet sheet = null;
//判断Worksheet是否存在
try {
sheet = doc.Workbook.Worksheets[workSheet.name];
} catch (Exception ex) {
sheet = doc.Workbook.Worksheets.Add(workSheet.name);
} AppLibrary.WriteExcel.Cells cells = sheet.Cells; var dt = workSheet.table; for (int j = ; j <= dt.Columns.Count - ; j++) {
if (workSheet.xf != null) {
cells.Add(workSheet.startX, workSheet.startY + j, dt.Columns[j].ColumnName, workSheet.xf);
} else {
cells.Add(workSheet.startX, workSheet.startY + j, dt.Columns[j].ColumnName);
}
}
for (int i = ; i <= dt.Rows.Count - ; i++) {
for (int j = ; j <= dt.Columns.Count - ; j++) {
cells.Add(i + + workSheet.startX, j + workSheet.startY, dt.Rows[i][j].ToEString());
}
}
}
doc.Send();
return true;
}
} public class WorkSheet {
private int _startX = ;
private int _startY = ;
public string name { get; set; }
public DataTable table { get; set; }
public int startX {
get {
return _startX;
}
set {
if (value > ) {
_startX = value;
}
}
}
public int startY {
get {
return _startY;
}
set {
if (value > ) {
_startY = value;
}
}
}
public AppLibrary.WriteExcel.XF xf { get; set; }
}

2、调用代码:

        ExcelHelper excel = new ExcelHelper();
excel.fileName = batchNo + ".xls"; //汇总
sql = string.Format(@"SELECT * from SKU WHERE batchNo='{0}'", batchNo);
ret = dbHelper.Query(sql);
AppLibrary.WriteExcel.XF xfcolumn = excel.doc.NewXF();
xfcolumn.Font.Bold = true;
xfcolumn.Pattern = ;
xfcolumn.PatternColor = AppLibrary.WriteExcel.Colors.Cyan;
excel.workSheets.Add(new WorkSheet() { name = "自动汇总", table = ret.Tables[], xf = xfcolumn });

3、设置样式和宽度,表头和单元格样式要分开设置,申明两个XF变量。

            #region 设置样式
       //设置单元格样式
var xf = doc.NewXF();
xf.UseBorder = true;
xf.LeftLineStyle = ;
xf.RightLineStyle = ;
xf.TopLineStyle = ;
xf.BottomLineStyle = ;
xf.LeftLineColor = AppLibrary.WriteExcel.Colors.Black;
xf.RightLineColor = AppLibrary.WriteExcel.Colors.Black;
xf.TopLineColor = AppLibrary.WriteExcel.Colors.Black;
xf.BottomLineColor = AppLibrary.WriteExcel.Colors.Black;
xf.UseFont = true;
       //设置表头样式
var thXf = doc.NewXF();
thXf.Pattern = ;
thXf.PatternColor = AppLibrary.WriteExcel.Colors.Default1B;
thXf.UseBorder = true;
thXf.LeftLineStyle = ;
thXf.RightLineStyle = ;
thXf.TopLineStyle = ;
thXf.BottomLineStyle = ;
thXf.LeftLineColor = AppLibrary.WriteExcel.Colors.Black;
thXf.RightLineColor = AppLibrary.WriteExcel.Colors.Black;
thXf.TopLineColor = AppLibrary.WriteExcel.Colors.Black;
thXf.BottomLineColor = AppLibrary.WriteExcel.Colors.Black;
thXf.Font.Bold = true; #endregion
#region 宽度
AddColumnInfo(doc, sheet, , , );
AddColumnInfo(doc, sheet, , , );
AddColumnInfo(doc, sheet, , , );
#endregion        private static void AddColumnInfo(AppLibrary.WriteExcel.XlsDocument doc, AppLibrary.WriteExcel.Worksheet sheet, int start, int end, int width) {
AppLibrary.WriteExcel.ColumnInfo colInfo = new AppLibrary.WriteExcel.ColumnInfo(doc, sheet);
colInfo.ColumnIndexStart = (ushort)start;
colInfo.ColumnIndexEnd = (ushort)end;
colInfo.Width = (ushort)(width * );
sheet.AddColumnInfo(colInfo);
}

说明:

  1、一个Sheet表中可以存放多张DataTable数据

  2、服务端无需安装Excel

  3、Send方法直接导出到浏览器端,无需先存本地再读取本地文件转换成byte输出

c# applibrary实现一个Sheet表中存放多张DataTable数据的更多相关文章

  1. pandans导出Excel并将数据保存到不同的Sheet表中

    数据存在mongodb中,按照类别导出到Excel文件,问题是想把同一类的数据放到一个sheet表中,最后只导出到一个excel文件中# coding=utf-8import pandas as pd ...

  2. pandas 将多个dataframe保存为一个excel文件的多个sheet表中

    # 创建文件 def create(): df1 = pd.DataFrame({"a1": [1, 2, 3], "b1": [4, 5, 6]}) df2 ...

  3. 解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据

    我们都知道,各种主流的社交应用或者阅读应用,基本都有列表类视图,并且都有滑到底部加载更多这一功能, 对应后端就是分页拉取数据.好处不言而喻,一般来说,这些数据项都是按时间倒序排列的,用户只关心最新的动 ...

  4. exp导出一个表中符合查询条件的数据

    原文地址:exp导出一个表中符合查询条件的数据 作者:charsi 导出一个表中的部分数据,使用QUERY参数,如下导出select * from test where object_id>50 ...

  5. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  6. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  7. 从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接)

    从数据表中随机抽取n条数据有哪几种方法(join实现可以先查数据然后再拼接) 一.总结 一句话总结:最好的是这个:"SELECT * FROM table WHERE id >= (( ...

  8. C语言:将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边。-在m行m列的二维数组中存放如下规律的数据,

    //将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边. #include <stdio.h> #define M 3 #define N 5 ...

  9. 解决在mysql表中删除自增id数据后,再添加数据时,id不会自增1的问题

    https://blog.csdn.net/shaojunbo24/article/details/50036859 问题:mysql表中删除自增id数据后,再添加数据时,id不会紧接.比如:自增id ...

随机推荐

  1. 采用重写tostring方法使ComboBox显示对象属性

    当ComboBox中添加的是对象集合的时候,如果运行就会发现显示是的命令空间.类名,而如果我们想显示对象属性名的时候,我们就可以在对象类中重写object基类中的tostring方法.

  2. Eclipse创建maven项目

    许久不创建maven web项目了,今天上手很是陌生,搜集资料后终于创建成功,跟大家也分享一下,同时也便于以后再次忘记使用... 新建maven项目(右击new,若不存在,可在other里面寻找)

  3. Discuz的安装 (原创帖,转载请注明出处)

    ========================写在前面的话========================= 1.LAMP环境搭建请查看这篇日志:http://www.cnblogs.com/yic ...

  4. <<Windows via C/C++>>学习笔记 —— 线程优先级【转】

    转自:http://www.cnblogs.com/wz19860913/archive/2008/08/04/1259807.html 每个线程都有一个“优先级”,范围是0-31,0为最低优先级,3 ...

  5. javascript 字符串多行的写法

    多行写法! $('#' +xx ).append ( '<div id="' + file.id + '" class="">\ <div c ...

  6. wcf 同时支持webhttp 和 引用方式

    wcf 实现参考 http://www.cnblogs.com/mingmingruyuedlut/p/4223116.html 兼容两种方式 1.修改服务端webconfig <system. ...

  7. RStudio中,出现中文乱码问题的解决方案

    RStudio中,出现中文乱码问题的解决方案解决步骤:1.设置RStudio文本显示的默认编码:RStudio菜单栏的Tools -> Global Options2.选择General -&g ...

  8. python中深复制与浅复制

    转载:http://blog.csdn.net/vicken520/article/details/8227524 java中也经常碰见这种问题.时间原因就不写java方面啦 Python深复制浅复制 ...

  9. XSS常用技巧

    一般发现一个xss漏洞后要做的基本上就是这些: 1. 伪造请求 使用$_REQUEST或$_GET 首先我们要找找该网站使用的程序是不是在网上能找到源码,如果能找到源码的话,就去分析后台管理员更改密码 ...

  10. 。U盘安装windows7操作系统

    1.下载. Windows 7微软原版无修改的系统镜像下载地址:Windows 764位旗舰版ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u ...