日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c# applibrary实现一个Sheet表中存放多张DataTable数据

發布時間:2024/9/5 C# 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# applibrary实现一个Sheet表中存放多张DataTable数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 == 0) {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 = 0; j <= dt.Columns.Count - 1; 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 = 0; i <= dt.Rows.Count - 1; i++) {for (int j = 0; j <= dt.Columns.Count - 1; j++) {cells.Add(i + 1 + workSheet.startX, j + workSheet.startY, dt.Rows[i][j].ToEString());}}}doc.Send();return true;}}public class WorkSheet {private int _startX = 1;private int _startY = 1;public string name { get; set; }public DataTable table { get; set; }public int startX {get {return _startX;}set {if (value > 1) {_startX = value;}}}public int startY {get {return _startY;}set {if (value > 1) {_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 = 1;xfcolumn.PatternColor = AppLibrary.WriteExcel.Colors.Cyan;excel.workSheets.Add(new WorkSheet() { name = "自動匯總", table = ret.Tables[0], xf = xfcolumn });

3、設置樣式和寬度,表頭和單元格樣式要分開設置,申明兩個XF變量。

#region 設置樣式
       //設置單元格樣式var xf = doc.NewXF();xf.UseBorder = true;xf.LeftLineStyle = 1;xf.RightLineStyle = 1;xf.TopLineStyle = 1;xf.BottomLineStyle = 1;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 = 1;thXf.PatternColor = AppLibrary.WriteExcel.Colors.Default1B;thXf.UseBorder = true;thXf.LeftLineStyle = 1;thXf.RightLineStyle = 1;thXf.TopLineStyle = 1;thXf.BottomLineStyle = 1;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, 0, 8, 15);AddColumnInfo(doc, sheet, 9, 9, 30);AddColumnInfo(doc, sheet, 10, 15, 15);#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 * 256);sheet.AddColumnInfo(colInfo);}

?

說明:

  1、一個Sheet表中可以存放多張DataTable數據

  2、服務端無需安裝Excel

  3、Send方法直接導出到瀏覽器端,無需先存本地再讀取本地文件轉換成byte輸出

轉載于:https://www.cnblogs.com/len0031/p/6141933.html

總結

以上是生活随笔為你收集整理的c# applibrary实现一个Sheet表中存放多张DataTable数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。