国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C# > 正文

C#如何將DataTable導出到Excel解決方案

2020-01-24 03:38:45
字體:
來源:轉載
供稿:網友
最近,由于公司項目中需要將系統內用戶操作的所有日志進行轉存備份,考慮到以后可能還需要還原,所以最后決定將日志數據備份到Excel中。

下面是我項目當中Excel.cs這個類的全部代碼,通過這個類可以很容易地將DataTable中的數據導入到Excel方法中。

首先,必須要下載NPOI.dll這個程序集,
類代碼如下:
復制代碼 代碼如下:

using System;
using NPOI.HSSF;
using NPOI.HPSF;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using System.Collections;
using System.IO;
using System.Data;
namespace BackupAttach
{
public class Excel
{
private HSSFWorkbook _workBook;
private ISheet _wbSheet = null;
private DataColumnCollection _columns = null;
private int _col = 0; //total columns
private int _row = 0; //total rows
private int _sheet = 0; //total sheets
private int _sheetRowNum = 65536; //each sheet allow rows
public Excel()
{
InstanceWorkBook();
}
/// <summary>
/// 實例方法
/// </summary>
/// <param name="sheetRowNum">單個表單允許的最大行數</param>
public Excel(int sheetRowNum)
{
_sheetRowNum = sheetRowNum;
InstanceWorkBook();
}
/// <summary>
/// 實例方法
/// </summary>
/// <param name="columns">表頭</param>
public Excel(DataColumnCollection columns)
{
_columns = columns;
InstanceWorkBook();
}
private void InstanceWorkBook()
{
/////cretate WorkBook
_workBook = new HSSFWorkbook();
var dsi = PropertySetFactory.CreateDocumentSummaryInformation();
dsi.Company = "BaiyiTimes";
_workBook.DocumentSummaryInformation = dsi;
////create a entry of SummaryInformation
var si = PropertySetFactory.CreateSummaryInformation();
si.Subject = "Etimes Secure Document System Log Backup";
_workBook.SummaryInformation = si;
}
private DataColumnCollection GetColumns(DataColumnCollection columns)
{
return columns == null || columns.Count == 0 ? _columns : columns;
}
private ISheet GetSheet(ISheet sheet)
{
return sheet == null ? _wbSheet : sheet;
}
private void CreateHeader(ISheet sheet, DataColumnCollection columns)
{
_columns = GetColumns(columns);
/////create row of column
var oRow = sheet.CreateRow(0);
foreach (DataColumn column in _columns)
{
var oCell = oRow.CreateCell(_col);
var style1 = _workBook.CreateCellStyle();
style1.FillForegroundColor = HSSFColor.BLUE.index2;
style1.FillPattern = FillPatternType.SOLID_FOREGROUND;
style1.Alignment = HorizontalAlignment.CENTER;
style1.VerticalAlignment = VerticalAlignment.CENTER;
var font = _workBook.CreateFont();
font.Color = HSSFColor.WHITE.index;
style1.SetFont(font);
oCell.CellStyle = style1;
var name = column.ColumnName;
oCell.SetCellValue(name.ToString());
_col++;
}
///// header belong to rows
_row++;
}
private void CreateHeader(ISheet sheet)
{
CreateHeader(sheet, null);
}
public ISheet CreateSheet()
{
return CreateSheet(null);
}
public ISheet CreateSheet(DataColumnCollection columns)
{
_wbSheet = _workBook.CreateSheet((_sheet + 1).ToString());
CreateHeader(_wbSheet, columns);
_sheet++;
return _wbSheet;
}
public void SetRowValue(DataRowCollection rows, ISheet sheet)
{
_wbSheet = GetSheet(sheet);
foreach (DataRow row in rows)
{
SetRowValue(row);
}
}
public void SetRowValue(DataRowCollection rows)
{
SetRowValue(rows, null);
}
public void SetRowValue(DataRow row)
{
// create a new sheet
if (_row % _sheetRowNum == 0)
{
CreateSheet();
}
var oRow = _wbSheet.CreateRow(_row % _sheetRowNum);
var obj = string.Empty;
var cell = 0;
foreach (DataColumn column in _columns)
{
obj = row[column.ColumnName].ToString();
oRow.CreateCell(cell).SetCellValue(obj);
cell++;
}
_row++;
}
public void SetProtectPassword(string password, string username)
{
_workBook.WriteProtectWorkbook(password, username);
}
public void SaveAs(string filePath)
{
if (File.Exists(filePath)) File.Delete(filePath);
var file = new FileStream(filePath, FileMode.Create);
_workBook.Write(file);
file.Close();
}
}
}

下面給出小Demo共參考:
復制代碼 代碼如下:

public void DataTableToExcel(DataTable dt,string path)
{
//instance excel object
//Excel excel = new Excel(65536);
Excel excel = new Excel();
//create a sheet
excel.CreateSheet(dt.Columns);
//write value into rows
//excel.SetRowValue(dt.Rows);
foreach (DataRow row in dt.Rows)
{
excel.SetRowValue(row);
}
// set excel protected
excel.SetProtectPassword("etimes2011@", "baiyi");
// save excel file to local
excel.SaveAs(path);
}

缺點:如果要導入到Excel中的數據量較多時(幾十萬或者幾百萬行),全部一次性放到DataTable中可能會對內存消耗很大,建議每次導入的數據最好不要超過1000條,可采取分頁查詢的方式將數據導入Excel中。

優點:1997-2003版本的xls中每個表單最大只支持65536行,2010可以支持1048576行,考慮到客戶機上安裝的版本不一樣,故Excel對象每個表單最大支持65536行,當表單到達最大行數時,Excel對象內部會自動創建新表單,在往Excel中寫數據的時候不用考慮這一點,這樣調用的時候更為方便
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
久久99亚洲网美利坚合众国| 国产麻豆麻豆| 国产精品视频一区麻豆| 成年人在线观看| 丁香视频五月| 丁香婷婷激情| 国产精品白浆流出视频| 亚洲第一区视频| 最近中文字幕mv免费高清视频8| 中文字幕在线第一页| 国产www网站| www.香蕉视频在线观看| 国产精品秘入口| 国产在线激情视频| 一级黄色av| 国产一二三区精品视频| 青青在线视频| 在线观看的网站你懂的| 五月婷婷丁香激情| 亚洲日本一区二区三区在线观看| 久久香蕉av| 夜夜操com| 中文在线官网天堂| 综合蜜桃精品| 国产毛片毛片| 九九视频在线播放| 青青草视频在线观看| 亚洲国产成人综合| 一本大道久久精品| 99热免费在线| av麻豆国产| 中文日本在线观看| 国产国产人免费人成免费视频| 免费一区二区在线观看| 香蕉视频免费在线播放| 在线视频观看你懂的| 中文字幕专区| 综合图区亚洲白拍在线| 日本中文字幕高清视频| 午夜视频在线观看网站午夜视频在线| 欧美日韩在线精品成人综合网| 亚洲精品视频在线免费| 午夜亚洲成人| 免费a级人成a大片在线观看| а√最新版在线天堂| 爱福利在线视频| 久久久久国产精品嫩草影院| 久久99精品久久久久久野外| 国产精品外围在线观看| 国产理论片免费观看| 国产精品视频一区二区免费不卡| 国产在线激情视频| 国产羞羞视频在线观看| 999福利在线视频| 四虎成人精品在永久免费| 天天操中文字幕视频| 国产在线麻豆精品| 18成年在线观看| 任你操在线观看| 中文字幕免费中文| 91涩漫在线观看c| sese在线视频| 1区2区3区在线| 亚洲成人电视网| 国产免费一级片| 在线免费观看高清视频色| 日本成人网址| 国产精品伦一区二区三区视频| 精品国内自产拍在线视频| 人人干人人插| 国产精品伦一区二区三区视频| 99久久精品免费观看国产| 国产在线三区| 亚洲视频日韩| 国产亚洲精品久久久久久移动网络| 97国产在线| 国产一起色一起爱| wwww在线观看| 96精品视频| 丁香花在线电影| www.av在线播放| 国产黄色一级片| 五月天婷婷基地| 黄色国产网站在线观看| 亚洲男人网站| 在线观看免费观看在线91| 国产性一级片| 国产九色视频| 国产69精品久久app免费版| av中文字幕在线看| 99re在线视频| 91九色在线看| 91激情在线| 在线国产中文字幕| 精品999视频| 国产精品国产三级国产试看| 欧美国产中文| 国产在线www| 国产精品一区二区三区四区色| 成年女人在线视频| 国自产拍在线网站网址视频| 美女被人操视频在线观看| 免费女人毛片视频| 久热中文字幕在线观看| 国产永久在线观看| 尤物视频免费在线观看| 国产一区二区三区福利| 国产福利小视频在线观看| 精品国产二区三区| 午夜羞羞小视频在线观看| 热99re久久精品精品免费| av网站大全在线观看| 青青国产在线| 国产一区二区三区美女秒播| 国产精品视频一区二区三区麻豆| 国产高清在线看| www.99色.com| 国产丝袜在线| www.狠狠操.com| 国产野外战在线播放| 中文国产字幕在线观看| 免费男女羞羞的视频网站中文字幕| 女子免费在线观看视频www| 尤物网站在线| www.毛片| 国产成a人亚洲精v品| 色欧美在线观看| 国产欧美日韩专区| а√资源新版在线天堂| 国产盗摄一区二区| 狠狠色综合久久婷婷| 依依成人在线| 1区2区3区在线| 欧美日韩综合高清一区二区| 国产三级在线| 成人欧美亚洲| 日本调教视频在线观看 | 成年网站免费入口在线观看| 91超碰在线免费| 在线黄色.com| 国产成人亚洲欧美电影| 国产乱精品一区二区三区| 四虎中文字幕| 伊人狠狠av| 伊人影院在线观看| 国产三级免费观看| 国产一级二级三级在线观看| 青青草观看免费视频在线| 伊人网在线免费观看| 国产三级在线| 尤物网址在线观看| 好看的中文字幕在线播放| v天堂福利视频在线观看| 91午夜视频| 国产www网站| 2020亚洲男人天堂| 99精品老司机免费视频| 国产精品四虎| 9999在线视频| 一个人看的www免费观看视频| 国产黄色大片在线观看| 国产精品国精产品一二| 国产福利在线视频| 永久免费av网站| jizz亚洲| 国产女王在线**视频 | 丁香视频免费观看| 欧美精品一区二区三区免费| 日本卡一卡2卡3卡4精品卡网站| h网址在线观看| 国产在线视频福利| 国产丝袜在线观看视频| 尤物在线视频| 国产啊啊啊视频在线观看| 中文字幕av高清| 免费看的毛片| 国产精品久久久久久久牛牛| 91中文字幕| 黄色av免费看| 永久免费网站在线| 国产卡1卡2卡三卡在线| 国产成人精品18| 欧美96在线| 国产95在线|亚洲| 超碰在线免费播放| 国产aa视频| 国产自产视频| 精品视频一二三| 黄色网址在线免费播放| 精品176二区| 中中文字幕av在线| 欧美精品日韩少妇| 尤物在线精品视频| 中文字幕在线第一页| 亚洲色婷婷综合开心网| 国产经典自拍视频在线观看 | 97视频免费| 国产免费一级片| 一级二级三级在线观看| 综合激情亚洲|