亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#用NPOI導出導入Excel幫助類

 更新時間:2022年02月21日 14:53:17   作者:lbx_15887055073  
這篇文章主要為大家詳細介紹了C#?NPOI導出導入Excel幫助類,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C#用NPOI導出導入Excel幫助類的具體代碼,供大家參考,具體內(nèi)容如下

1、準備工作

在管理NuGet程序包中搜索 NPOI,安裝 NPOI 到要項目中。

2、幫助類

/// <summary>
/// DataTable寫入Excel
/// </summary>
/// <param name="dt"></param>
/// <param name="strExcelFileName"></param>
/// <returns></returns>
public bool GridToExcelByNPOI(DataTable dt, string strExcelFileName)
{
? ? try
? ? {
? ? ? ? HSSFWorkbook workbook = new HSSFWorkbook();
? ? ? ? ISheet sheet = workbook.CreateSheet("Sheet1");

? ? ? ? ICellStyle HeadercellStyle = workbook.CreateCellStyle();
? ? ? ? HeadercellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
? ? ? ? HeadercellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
? ? ? ? HeadercellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
? ? ? ? HeadercellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
? ? ? ? HeadercellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
? ? ? ? //字體
? ? ? ? NPOI.SS.UserModel.IFont headerfont = workbook.CreateFont();
? ? ? ? headerfont.Boldweight = (short)FontBoldWeight.Bold;
? ? ? ? HeadercellStyle.SetFont(headerfont);

? ? ? ? //用column name 作為列名
? ? ? ? int icolIndex = 0;
? ? ? ? IRow headerRow = sheet.CreateRow(0);
? ? ? ? foreach (DataColumn item in dt.Columns)
? ? ? ? {
? ? ? ? ? ? ICell cell = headerRow.CreateCell(icolIndex);
? ? ? ? ? ? cell.SetCellValue(item.ColumnName);
? ? ? ? ? ? cell.CellStyle = HeadercellStyle;
? ? ? ? ? ? icolIndex++;
? ? ? ? }

? ? ? ? ICellStyle cellStyle = workbook.CreateCellStyle();

? ? ? ? //為避免日期格式被Excel自動替換,所以設(shè)定 format 為 『@』 表示一率當成text來看
? ? ? ? cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("@");
? ? ? ? cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
? ? ? ? cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
? ? ? ? cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
? ? ? ? cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;

? ? ? ? NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont();
? ? ? ? cellfont.Boldweight = (short)FontBoldWeight.Normal;
? ? ? ? cellStyle.SetFont(cellfont);

? ? ? ? //建立內(nèi)容行
? ? ? ? int iRowIndex = 1;
? ? ? ? int iCellIndex = 0;
? ? ? ? foreach (DataRow Rowitem in dt.Rows)
? ? ? ? {
? ? ? ? ? ? IRow DataRow = sheet.CreateRow(iRowIndex);
? ? ? ? ? ? foreach (DataColumn Colitem in dt.Columns)
? ? ? ? ? ? {

? ? ? ? ? ? ? ? ICell cell = DataRow.CreateCell(iCellIndex);
? ? ? ? ? ? ? ? cell.SetCellValue(Rowitem[Colitem].ToString());
? ? ? ? ? ? ? ? cell.CellStyle = cellStyle;
? ? ? ? ? ? ? ? iCellIndex++;
? ? ? ? ? ? }
? ? ? ? ? ? iCellIndex = 0;
? ? ? ? ? ? iRowIndex++;
? ? ? ? }

? ? ? ? //自適應(yīng)列寬度
? ? ? ? for (int i = 0; i < icolIndex; i++)
? ? ? ? {
? ? ? ? ? ? sheet.AutoSizeColumn(i);
? ? ? ? }

? ? ? ? //寫Excel
? ? ? ? FileStream file = new FileStream(strExcelFileName, FileMode.OpenOrCreate);
? ? ? ? workbook.Write(file);
? ? ? ? file.Flush();
? ? ? ? file.Close();
? ? ? ? return true;
? ? }
? ? catch (Exception ex)
? ? {
? ? ? ? return false;
? ? }
}


/// <summary>
/// 將excel中的數(shù)據(jù)導入到DataTable中
/// </summary>
/// <param name="fileName">fileName</param>
/// <param name="sheetName">excel工作薄sheet的名稱</param>
/// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param>
/// <returns>返回的DataTable</returns>
public DataTable ExcelToDataTable(string fileName, string sheetName, bool isFirstRowColumn)
{
? ? ISheet sheet = null;
? ? DataTable data = new DataTable();
? ? IWorkbook workbook = null;
? ? FileStream fs = null;
? ? int startRow = 0;
? ? try
? ? {
? ? ? ? fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
? ? ? ? if (fileName.IndexOf(".xlsx") > 0) // 2007版本
? ? ? ? ? ? workbook = new XSSFWorkbook(fs);
? ? ? ? else if (fileName.IndexOf(".xls") > 0) // 2003版本
? ? ? ? ? ? workbook = new HSSFWorkbook(fs);

? ? ? ? if (sheetName != null)
? ? ? ? {
? ? ? ? ? ? sheet = workbook.GetSheet(sheetName);
? ? ? ? ? ? if (sheet == null) //如果沒有找到指定的sheetName對應(yīng)的sheet,則嘗試獲取第一個sheet
? ? ? ? ? ? {
? ? ? ? ? ? ? ? sheet = workbook.GetSheetAt(0);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? sheet = workbook.GetSheetAt(0);
? ? ? ? }
? ? ? ? if (sheet != null)
? ? ? ? {
? ? ? ? ? ? IRow firstRow = sheet.GetRow(0);
? ? ? ? ? ? int cellCount = firstRow.LastCellNum; //一行最后一個cell的編號 即總的列數(shù)

? ? ? ? ? ? if (isFirstRowColumn)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ICell cell = firstRow.GetCell(i);
? ? ? ? ? ? ? ? ? ? if (cell != null)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? string cellValue = cell.StringCellValue;
? ? ? ? ? ? ? ? ? ? ? ? if (cellValue != null)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? DataColumn column = new DataColumn(cellValue);
? ? ? ? ? ? ? ? ? ? ? ? ? ? data.Columns.Add(column);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? startRow = sheet.FirstRowNum + 1;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? startRow = sheet.FirstRowNum;
? ? ? ? ? ? }

? ? ? ? ? ? //最后一列的標號
? ? ? ? ? ? int rowCount = sheet.LastRowNum;
? ? ? ? ? ? for (int i = startRow; i <= rowCount; ++i)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? IRow row = sheet.GetRow(i);
? ? ? ? ? ? ? ? if (row == null) continue; //沒有數(shù)據(jù)的行默認是null       

? ? ? ? ? ? ? ? DataRow dataRow = data.NewRow();
? ? ? ? ? ? ? ? for (int j = row.FirstCellNum; j < cellCount; ++j)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if (row.GetCell(j) != null) //同理,沒有數(shù)據(jù)的單元格都默認是null
? ? ? ? ? ? ? ? ? ? ? ? dataRow[j] = row.GetCell(j).ToString();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? data.Rows.Add(dataRow);
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? return data;
? ? }
? ? catch (Exception ex)
? ? {
? ? ? ? Console.WriteLine("Exception: " + ex.Message);
? ? ? ? return null;
? ? }
}

3、使用

(1)DataTable寫入Excel

var Sql = "select id,name from test";
var dt = DB.DB.ExecuteDataTable(Sql);
//保存文件
string saveName = "temp_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
string DownloadExcelDic = "DownloadExcel";
string webDic = AppDomain.CurrentDomain.BaseDirectory + DownloadExcelDic;
if (!Directory.Exists(webDic))//判斷目錄是否存在
{
? ? Directory.CreateDirectory(webDic);//不存在則創(chuàng)建新目錄
}
string path = webDic + @"\" + saveName; //目錄+文件名+后綴名
bool isBuild = GridToExcelByNPOI(dt, path);

(2)導入Excel返回DataTable

//1、先上傳文件,將文件保存到服務(wù)器上

//2、導入Excel
string fileDic = "";//文件路徑
var dt = ExcelToDataTable(fileDic, "sheet1", true);

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論