一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#使用Datatable導出Excel

C#使用Datatable導出Excel

2022-03-01 14:35薛定諤家的貓 C#

這篇文章主要為大家詳細介紹了C#使用Datatable導出Excel的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C#使用Datatable導出Excel的具體代碼,供大家參考,具體內容如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using Newtonsoft.Json;
namespace EasyFrame.Common
{
 /// <summary>
 ///title調用信息
 /// </summary>
 public class ChartTitle
 {
  /// <summary>
  /// 調用名
  /// </summary>
  public string CallName { get; set; }
  /// <summary>
  /// 標頭信息
  /// </summary>
  public List<ChartName> SetNameList { get; set; }
 }
 public class ChartName
 {
  /// <summary>
  /// 一級標頭
  /// </summary>
  public string Name { get; set; }
  /// <summary>
  /// 二級標頭
  /// </summary>
  public List<string> ChartChildNameList { get; set; }
 
 }
 
 public class ExcelHelper
 {
 
  //
  /// <summary>
  /// Datatable導出Excel
  /// </summary>
  /// <param name="dt">數據</param>
  /// <param name="list">表頭</param>
  /// <param name="counts">總條數</param>
  /// <param name="filePath">保存地址</param>
  /// <returns></returns>
  public static MemoryStream WriteExcel(DataTable dt, List<ChartTitle> objlist, string filePath)
  {
   var list = objlist.FirstOrDefault(a => a.CallName == "ccc").SetNameList;
   if (!string.IsNullOrEmpty(filePath) && null != dt && dt.Rows.Count > 0)
   {
    XSSFWorkbook book = new XSSFWorkbook();
    NPOI.SS.UserModel.ISheet sheet = book.CreateSheet(dt.TableName);
    ICell cell = null;
    ICellStyle style = book.CreateCellStyle();
    IFont font = book.CreateFont();//創建字體樣式
    IFont fonts = book.CreateFont();//創建字體樣式
    IFont fontss = book.CreateFont();//創建字體樣式
    font.Color = NPOI.HSSF.Util.HSSFColor.Red.Index;//設置字體顏色
    ICellStyle styles = book.CreateCellStyle(); //紅色
    fonts.Color = NPOI.HSSF.Util.HSSFColor.Green.Index;
    ICellStyle styless = book.CreateCellStyle(); //綠色
    fontss.Color = NPOI.HSSF.Util.HSSFColor.Blue.Index;
    ICellStyle stylesss = book.CreateCellStyle(); //藍色
    styless.SetFont(fonts);
    styles.SetFont(font);
    stylesss.SetFont(fontss);
    style.Alignment = HorizontalAlignment.Center;
    NPOI.SS.UserModel.IRow row1 = sheet.CreateRow(0);
    NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(1);
    var row = row1;
    int num = 0;//記錄列
    var d = true;//是否第一次加載到二級表單
    #region 創建表頭
    //兩行單列
    for (int i = 0; i < list.Count; i++)
    {
     if (!d)
     {
      row = row1;
      d = true;
     }
     if (list[i].ChartChildNameList == null)
     {
      cell = row.CreateCell(num);
      sheet.SetColumnWidth(num, 15 * 256);
      cell.SetCellValue(list[i].Name);
      cell.CellStyle = style;
      sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 1, num, num));
      num++;
      continue;
     }
     //兩行多列
     var count = list[i].ChartChildNameList.Count; //列數
     cell = row.CreateCell(num);
     cell.SetCellValue(list[i].Name);
     cell.CellStyle = style;
     sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, num, count + num - 1));
     if (d)
     {
      d = false;
      row = row2;
     }
     var t = 0;
     var rang = sheet.GetRow(1);
     for (int j = 0; j < count; j++)
     {
      sheet.SetColumnWidth(num + t, 5 * 256);
      cell = row.CreateCell(num + t);
      cell.SetCellValue(list[i].ChartChildNameList[j]);
      cell.CellStyle = style;
      t++;
     }
     num = num + count;
    }
    #endregion 創建表頭
    #region 寫入數據
    int customs = 0;//記錄列數
    int clouns = 0;//記錄行數
 
 
 
    filePath = string.Format(filePath, "XXX");
    #region 導出操作
    var data1 = JsonConvert.DeserializeObject<List<類名>>(dt.Rows[0][0].ToString());
    foreach (var item in data1)
    {
     NPOI.SS.UserModel.IRow rows = sheet.CreateRow(clouns + 2);
     customs = 0;
     rows.CreateCell(customs).SetCellValue(Convert.ToString(item.No)); customs++;
     rows.CreateCell(customs).SetCellValue(Convert.ToString(item.LotteryOpenNo)); customs++;
     for (int i = 0; i < item.Wan.Length; i++)
     {
      if (item.LotteryOpenNo.Split(',')[0] == item.Wan[i].ToString())
      {
       cell = rows.CreateCell(customs);
       cell.SetCellValue(item.Wan[i]);
       cell.CellStyle = styles;
       customs++;
      }
      else
      {
       rows.CreateCell(customs).SetCellValue(item.Wan[i]); customs++;
      }
     }
     for (int j = 0; j < item.Qian.Length; j++)
     {
      if (item.LotteryOpenNo.Split(',')[1] == item.Qian[j].ToString())
      {
       cell = rows.CreateCell(customs);
       cell.SetCellValue(item.Qian[j]);
       cell.CellStyle = styles;
       customs++;
      }
      else
      {
       rows.CreateCell(customs).SetCellValue(item.Qian[j]); customs++;
      }
     }
     for (int k = 0; k < item.Bai.Length; k++)
     {
      if (item.LotteryOpenNo.Split(',')[2] == item.Bai[k].ToString())
      {
       cell = rows.CreateCell(customs);
       cell.SetCellValue(item.Bai[k]);
       cell.CellStyle = styles;
       customs++;
      }
      else
      {
       rows.CreateCell(customs).SetCellValue(item.Bai[k]); customs++;
      }
     }
     for (int l = 0; l < item.Shi.Length; l++)
     {
      if (item.LotteryOpenNo.Split(',')[3] == (item.Shi[l].ToString()))
      {
       cell = rows.CreateCell(customs);
       cell.SetCellValue(item.Shi[l]);
       cell.CellStyle = styles;
       customs++;
      }
      else
      {
       rows.CreateCell(customs).SetCellValue(item.Shi[l]); customs++;
      }
     }
     for (int m = 0; m < item.Ge.Length; m++)
     {
      if (item.LotteryOpenNo.Split(',')[4] == (item.Ge[m].ToString()))
      {
       cell = rows.CreateCell(customs);
       cell.SetCellValue(item.Ge[m]);
       cell.CellStyle = styles;
       customs++;
      }
      else
      {
       rows.CreateCell(customs).SetCellValue(item.Ge[m]); customs++;
      }
     }
     for (int n = 0; n < item.Fen.Length; n++)
     {
      if (item.LotteryOpenNo.Contains(item.Fen[n].ToString()))
      {
       cell = rows.CreateCell(customs);
       cell.SetCellValue(item.Fen[n]);
       cell.CellStyle = styles;
       customs++;
      }
      else
      {
       rows.CreateCell(customs).SetCellValue(item.Fen[n]); customs++;
      }
 
     }
     clouns++;
    }
 
    #endregion
 
 
    #endregion 寫入數據
    // 寫入到客戶端
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
     book.Write(ms);
     using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
     {
      byte[] data = ms.ToArray();
      fs.Write(data, 0, data.Length);
      fs.Flush();
     }
     book = null;
     return ms;
    }
   }
   return null;
  }
 
 
 
 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/yuanzijian-ruiec/archive/2018/10/01/9734280.html

延伸 · 閱讀

精彩推薦
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
主站蜘蛛池模板: a级精品九九九大片免费看 a级动漫 | 韩国免费视频 | 动漫精品午夜在线播放 | 成年男女免费视频网站 | 能播放18xxx18女同 | 青青国产成人久久激情911 | 日本另类z0zx高清 | 亚洲激情 欧美 | bt天堂午夜国产精品 | 校园情射| 袖珍人与大黑人性视频 | 国产综合亚洲欧美日韩一区二区 | 男人天堂国产 | 色444| 丝袜老师好湿好紧我要进去了 | 国产精品视频久久 | 四虎永久在线精品国产馆v视影院 | 高清国产精品久久久久 | 国产成人愉拍精品 | 久久免费资源福利资源站 | 国产精品久久久久久久午夜片 | 欧美成人第一页 | 富士av105| 免费国产高清精品一区在线 | 美味情缘韩国在线观看视频 | 免费国产成人 | 男人捅女人动漫 | 亚洲国产麻豆 | 91精品久久一区二区三区 | 亚洲国产欧美目韩成人综合 | 91精品国产高清久久久久久io | 男人看的网址 | 羞羞答答影院在线 | a一级毛片录像带 录像片 | 免费看一级 | 日韩亚洲一区中文字幕在线 | 人人爱操 | 四虎影视黄色 | 91精品国产品国语在线不卡 | 欧洲vodafone精品性 | 青青草成人在线观看 |