新建一个ExcelService类,编写共用程式
public class ExcelService
{
/// <summary>
/// 設置Excel單元格樣式
/// </summary>
/// <param name="book"></param>
/// <param name="strFontName"></param>
/// <param name="align"></param>
/// <param name="valign"></param>
/// <param name="border">實線</param>
/// <param name="topThin">上邊框實線</param>
/// <param name="topDot">上邊框虛線</param>
/// <param name="leftright">左右實線</param>
/// <returns></returns>
public HSSFCellStyle SetExcelCellStyle(NPOI.HSSF.UserModel.HSSFWorkbook book, string strFontName = "新細明體", int align = 0, int valign = 0, int border = 0, int topThin = 0, int topDot = 0, int leftright = 0, short FontHeightInPoints = 12, short fontFontWeight = 0)
{
HSSFCellStyle style = book.CreateCellStyle() as HSSFCellStyle;
if (align == 1)
style.Alignment = HorizontalAlignment.Center; // 水平居中
else if (align == 2)
style.Alignment = HorizontalAlignment.Right;
else
style.Alignment = HorizontalAlignment.Left;
if (valign == 1)
style.VerticalAlignment = VerticalAlignment.Center; // 垂直居中
if (border != 0) // 所有邊框為實線
{
style.BorderTop = BorderStyle.Thin; // 實線
style.BorderRight = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderBottom = BorderStyle.Thin;
}
if (topThin != 0) // 上邊框實線
style.BorderTop = BorderStyle.Thin; // 虛線
if (topDot != 0) // 上邊框虛線
style.BorderTop = BorderStyle.Dotted; // 虛線
if (leftright != 0) // 左右實線
{
style.BorderRight = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
}
NPOI.SS.UserModel.IFont font = book.CreateFont(); // 創建字體
style.SetFont(font);
font.FontHeightInPoints = FontHeightInPoints;
if (fontFontWeight != 0) // 字體加粗
// font.Boldweight = Font.BOLD; // 没效果
font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Bold; // Bold = 700
font.FontName = strFontName;
return style;
}
/// <summary>
/// 設置單元格樣式
/// </summary>
/// <param name="row"></param>
/// <param name="colNum"></param>
/// <param name="strCellValue"></param>
/// <param name="style"></param>
/// <returns></returns>
public ICell GetExcelCell(IRow row, int colNum, string strCellValue, HSSFCellStyle style, HSSFSheet sheet = null, int colWitdht = 0,int iType=0)
{
ICell rowHeader = row.CreateCell(colNum);
//iType == 0時是字符, 其他為數字
if (iType == 0 || strCellValue == "") rowHeader.SetCellValue(strCellValue == null ? " " : strCellValue);
else
{
int iValue=0;
if (strCellValue == null || strCellValue=="") strCellValue = "0";
int.TryParse(strCellValue, out iValue);
rowHeader.SetCellValue(iValue);
}
rowHeader.CellStyle = style;
if (sheet != null)
sheet.SetColumnWidth(colNum, colWitdht * 256);
return rowHeader;
}
/// <summary>
/// 貨幣格式的單元格
/// </summary>
/// <param name="row"></param>
/// <param name="colNum"></param>
/// <param name="strCellValue"></param>
/// <param name="style"></param>
/// <param name="sheet"></param>
/// <param name="colWitdht"></param>
/// <param name="iType"></param>
/// <returns></returns>
public ICell GetExcelCellAm(IRow row, int colNum, int dCellValue, ICellStyle style, HSSFSheet sheet = null, int colWitdht = 0, int iType = 0)
{
ICell rowHeader = row.CreateCell(colNum);
rowHeader.SetCellValue(dCellValue);
rowHeader.CellStyle = style;
if (sheet != null)
sheet.SetColumnWidth(colNum, colWitdht * 256);
return rowHeader;
}
/// <summary>
/// 給一定範圍的區域設定樣式
/// </summary>
/// <param name="sheet"></param>
/// <param name="region">設定樣式語氣 HSSFSheet region = new NPOI.SS.Util.CellRangeAddress(row1, row2, col1, col2)</param>
/// <param name="style"></param>
public void SetExcelRegionBorder(HSSFSheet sheet, CellRangeAddress region, HSSFCellStyle style)
{
sheet.AddMergedRegion(region); // 合併單元格
for (int i = region.FirstRow; i <= region.LastRow; i++)
{
IRow row = HSSFCellUtil.GetRow(i, sheet);
for (int j = region.FirstColumn; j <= region.LastColumn; j++)
{
ICell singleCell = HSSFCellUtil.GetCell(row, (short)j);
singleCell.CellStyle = style;
}
}
}
/// <summary>
/// 設置文件名稱 與文件存放路徑
/// </summary>
/// <param name="path"></param>
/// <param name="extName"></param>
/// <returns></returns>
public string GetFileName(string path, string extName = ".pdf")
{
string strDateTime = System.DateTime.Now.ToString("yyyyMMddHHmmss");
if (!System.IO.Directory.Exists(path)) // 判斷文件夾是否存在 ,若不存在,則創建
System.IO.Directory.CreateDirectory(path);
string strWebId = "";
string fileStrB = strWebId + strDateTime; // 加密前
byte[] result = Encoding.Default.GetBytes(fileStrB);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(result);
string fileName = BitConverter.ToString(output).ToString().Replace("-", "") + extName;//加密后
return fileName;
}
}
页面代码
<div style="display:none;" >
<a id="GrntlSalesP12_Open" href="#" target="_blank" style="display:none;"></a>
</div>
function funGcntlCpaxP12Ok()
{
var GRUP_CD_B = document.getElementById("GRUP_CD_B").value;//團號
var GRUP_CD_E = document.getElementById("GRUP_CD_E").value;
var LEAV_DT_B1 = document.getElementById("LEAV_DT_B").value;//時間
var LEAV_DT_E1 = document.getElementById("LEAV_DT_E").value;
var LEAV_DT_B = LEAV_DT_B1.replace('/', '-').replace('/', '-');
var LEAV_DT_E = LEAV_DT_E1.replace('/', '-').replace('/', '-');
var url = "ExportExcelP12" + '/'
+ GRUP_CD_B + escape(";")
+ GRUP_CD_E + escape(";")
+ LEAV_DT_B + escape(";")
+ LEAV_DT_E
document.getElementById("GrntlSalesP12_Open").href = "/GroupSalesMag/" + url;
document.getElementById("GrntlSalesP12_Open").click();
}
数据处理
public GroupPresentationDataViewModel GcntlSalesP12Data(string id)
{
var dataModel = new GroupPresentationDataViewModel();
string GRUP_CD_B = "";
string GRUP_CD_E = "";
string LEAV_DT_B = "";
string LEAV_DT_E = "";
var ids = id.Split(';');
//檢核報文合法性
if (ids.Length == 4)
{
GRUP_CD_B = ids[0];
GRUP_CD_E = ids[1];
LEAV_DT_B = ids[2].Replace('-', '/');
LEAV_DT_E = ids[3].Replace('-', '/');
}
dataModel.GRUP_CD_B = GRUP_CD_B;//團號
dataModel.GRUP_CD_E = GRUP_CD_E;//旅行社名称
dataModel.LEAV_DT_B = LEAV_DT_B;//起始序號
dataModel.LEAV_DT_E = LEAV_DT_E;//結束序號
//查詢旅行團資料
DataTable dtGetTrgrupList = this._trGrupService.GetTrgrupGrupData(GRUP_CD_B, GRUP_CD_E, LEAV_DT_B, LEAV_DT_E);
List<TrgrupListP22> trgrupListP22 = (List<TrgrupListP22>)ModelConvertHelper<TrgrupListP22>.ConvertToModel(dtGetTrgrupList);
if (dtGetTrgrupList != null && dtGetTrgrupList.Rows.Count > 0)
{
for (int i = 0, j = dtGetTrgrupList.Rows.Count; i < j; i++)
{
string strPaxCd = dtGetTrgrupList.Rows[i]["PAX_CD"].ToString();
if (strPaxCd != null && strPaxCd != "")
{
DataTable dtTrcntaT3 = this._trcntaService.QueryCntaByCntaGetTop1(strPaxCd, "P", "T3', 'T4", "CNTA_TP, MAIL_FG DESC");
DataTable dtTrcntaT1 = this._trcntaService.QueryCntaByCntaGetTop1(strPaxCd, "P", "T1', 'T2", "CNTA_TP, MAIL_FG DESC");
DataTable dtTrcntaA5 = this._trcntaService.QueryCntaByCntaGetTop1(strPaxCd, "P", "A5', 'A6", "MAIL_FG DESC, CNTA_TP");
if (dtTrcntaT3 != null && dtTrcntaT3.Rows.Count > 0)
{
string srtT3CityCcd = dtTrcntaT3.Rows[0]["CITY_CCD"].ToString();
string srtT3CntaDr = dtTrcntaT3.Rows[0]["CNTA_DR"].ToString();
string srtT3CntaZip = dtTrcntaT3.Rows[0]["CNTA_ZIP"].ToString();
trgrupListP22[i].T3_CITY_CCD = srtT3CityCcd;
trgrupListP22[i].T3_CNTA_DR = srtT3CntaDr;
trgrupListP22[i].T3_CNTA_ZIP = srtT3CntaZip;
}
if (dtTrcntaT1 != null && dtTrcntaT1.Rows.Count > 0)
{
string srtT1CityCcd = dtTrcntaT1.Rows[0]["CITY_CCD"].ToString();
string srtT1CntaDr = dtTrcntaT1.Rows[0]["CNTA_DR"].ToString();
string srtT1CntaZip = dtTrcntaT1.Rows[0]["CNTA_ZIP"].ToString();
trgrupListP22[i].T1_CITY_CCD = srtT1CityCcd;
trgrupListP22[i].T1_CNTA_DR = srtT1CntaDr; ;
}
if (dtTrcntaA5 != null && dtTrcntaA5.Rows.Count > 0)
{
string srtA5CityCcd = dtTrcntaA5.Rows[0]["CITY_CCD"].ToString();
string srtA5CntaDr = dtTrcntaA5.Rows[0]["CNTA_DR"].ToString();
string srtA5CntaZip = dtTrcntaA5.Rows[0]["CNTA_ZIP"].ToString();
trgrupListP22[i].A5_CNTA_DR = srtA5CntaDr;
trgrupListP22[i].A5_CNTA_ZIP = srtA5CntaZip;
}
}
string strItNatn = dtGetTrgrupList.Rows[i]["ITN_NATN"].ToString();
if (strItNatn != null && strItNatn != "")
{
DataTable dtGetTrNatn = this._trnatnService.GetTrNatnBySql(strItNatn.Replace("/", "','"), "", "");
string NATN_NM = "";
string strSymbol = "";
if (dtGetTrNatn != null && dtGetTrNatn.Rows.Count > 0)
{
for (int a = 0, b = dtGetTrNatn.Rows.Count; a < b; a++)
{
string strNatnCnm = dtGetTrNatn.Rows[a]["NATN_CNM"] == null ? "" : dtGetTrNatn.Rows[a]["NATN_CNM"].ToString();
string strNatnEnm = dtGetTrNatn.Rows[a]["NATN_ENM"] == null ? "" : dtGetTrNatn.Rows[a]["NATN_ENM"].ToString();
if (strNatnCnm != null && strNatnCnm != "")
{
NATN_NM = NATN_NM + strSymbol + strNatnCnm;
}
else
{
NATN_NM = NATN_NM + strSymbol + strNatnEnm;
}
strSymbol = "/";
}
}
trgrupListP22[i].NATN_NM = NATN_NM;
}
string strIdNo = dtGetTrgrupList.Rows[i]["ID_NO"] == null ? "" : dtGetTrgrupList.Rows[i]["ID_NO"].ToString();
string strOIdNo = dtGetTrgrupList.Rows[i]["OID_NO"] == null ? "" : dtGetTrgrupList.Rows[i]["OID_NO"].ToString();
string strNo = strIdNo == "" ? strOIdNo : strIdNo;
trgrupListP22[i].ID_NO = strNo;
}
}
dataModel.trgrupListP22 = trgrupListP22;
return dataModel;
}
导出文件
public void ExportExcelP12(string id)
{
var dataModel = this.GcntlSalesP12Data(id);
try
{
if (dataModel != null && dataModel.trgrupListP22 != null && dataModel.trgrupListP22.Count > 0)
{
ExcelService excelService = new ExcelService();
string path = Server.MapPath(@"~\upload\");
string strDate = System.DateTime.Now.ToString("yyyMMddHHmmss");
string strName = "happy_travel_csv_" + strDate;
if (!System.IO.Directory.Exists(path)) // 判斷文件夾是否存在 ,若不存在,則創建
System.IO.Directory.CreateDirectory(path);
byte[] result = Encoding.Default.GetBytes(strName);//文件名——EXP_ + 系统时间+
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(result);
string fileName = BitConverter.ToString(output).ToString().Replace("-", "").ToLower() + ".csv";//加密后
FileStream fileStream = new FileStream(path + fileName, FileMode.Create);
HSSFWorkbook workBook = new HSSFWorkbook(); // 創建Excel表
ISheet sheet = workBook.CreateSheet("團體保險旅客明細表");
// sheet列表
List<NPOI.SS.UserModel.ISheet> sheetList = new List<NPOI.SS.UserModel.ISheet>();
sheetList.Add(sheet);
sheet.DefaultColumnWidth = 10;
sheet.DefaultRowHeight = 300;
this.ExportExcel(sheet, workBook, dataModel);
// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
Response.ContentType = "application/vnd.ms-csv";
workBook.Write(ms);
workBook.Write(fileStream);
ms.Close();
ms.Dispose();
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", fileName));
Response.BinaryWrite(ms.ToArray());
Response.OutputStream.Flush();
Response.OutputStream.Close();
Response.Flush();
Response.End();
}
else
{
string strMsg = "查無相關團員名冊資料";
ReturnError(strMsg);
}
}
catch (Exception ex)
{
logger.Error(LogUtility.GetExceptionDetails(ex));
}
}
画出表格
protected void ExportExcel(NPOI.SS.UserModel.ISheet sheet, NPOI.HSSF.UserModel.HSSFWorkbook workBook, GroupPresentationDataViewModel dataModel)
{
ExcelService excelService = new ExcelService();
HSSFCellStyle style = excelService.SetExcelCellStyle(workBook);
HSSFCellStyle styleRight = excelService.SetExcelCellStyle(workBook, "宋體", 2, 1);
if (dataModel.trgrupListP22 != null && dataModel.trgrupListP22.Count > 0)
{
// 第一行——表头
NPOI.SS.UserModel.IRow row = sheet.CreateRow(0);
excelService.GetExcelCell(row, 0, "旅行社名稱", style);
excelService.GetExcelCell(row, 1, "旅行社團名", style);
excelService.GetExcelCell(row, 2, "中文姓名", style);
excelService.GetExcelCell(row, 3, "身分證字號", style);
excelService.GetExcelCell(row, 4, "西元生日", style);
excelService.GetExcelCell(row, 5, "辦公電話區碼", style);
excelService.GetExcelCell(row, 6, "辦公電話", style);
excelService.GetExcelCell(row, 7, " 辦公分機", style);
excelService.GetExcelCell(row, 8, "住家電話區碼", style);
excelService.GetExcelCell(row, 9, "住家電話", style);
excelService.GetExcelCell(row, 10, "手機號碼", style);
excelService.GetExcelCell(row, 11, "郵遞區號", style);
excelService.GetExcelCell(row, 12, " 通訊地址", style);
excelService.GetExcelCell(row, 13, "工作內容", style);
excelService.GetExcelCell(row, 14, " 旅遊地區", style);
excelService.GetExcelCell(row, 15, "出發日", style);
excelService.GetExcelCell(row, 16, "旅遊天數", style);
excelService.GetExcelCell(row, 17, "去程航班", style);
excelService.GetExcelCell(row, 18, " 回程航班", style);
for (int i = 0, j = dataModel.trgrupListP22.Count; i < j; i++)
{
NPOI.SS.UserModel.IRow rowBody = sheet.CreateRow(i + 1);
excelService.GetExcelCell(rowBody, 0, dataModel.trgrupListP22[i].COMP_FNM, style);
excelService.GetExcelCell(rowBody, 1, dataModel.trgrupListP22[i].GRUP_NM, style);
excelService.GetExcelCell(rowBody, 2, dataModel.trgrupListP22[i].PAX_CNM, style);
excelService.GetExcelCell(rowBody, 3, dataModel.trgrupListP22[i].ID_NO, style);
excelService.GetExcelCell(rowBody, 4, dataModel.trgrupListP22[i].BRTH_DT, style);
excelService.GetExcelCell(rowBody, 5, dataModel.trgrupListP22[i].T3_CITY_CCD, style);
excelService.GetExcelCell(rowBody, 6, dataModel.trgrupListP22[i].T3_CNTA_DR, style);
excelService.GetExcelCell(rowBody, 7, dataModel.trgrupListP22[i].T3_CNTA_ZIP, style);
excelService.GetExcelCell(rowBody, 8, dataModel.trgrupListP22[i].T1_CITY_CCD, style);
excelService.GetExcelCell(rowBody, 9, dataModel.trgrupListP22[i].T1_CNTA_DR, style);
excelService.GetExcelCell(rowBody, 10, "", style);//手機號碼
excelService.GetExcelCell(rowBody, 11, dataModel.trgrupListP22[i].A5_CNTA_ZIP, style);
excelService.GetExcelCell(rowBody, 12, dataModel.trgrupListP22[i].A5_CNTA_DR, style);
excelService.GetExcelCell(rowBody, 13, "", styleRight);//工作內容
excelService.GetExcelCell(rowBody, 14, dataModel.trgrupListP22[i].NATN_NM, style);
excelService.GetExcelCell(rowBody, 15, dataModel.trgrupListP22[i].LEAV_DT, style);
excelService.GetExcelCell(rowBody, 16, dataModel.trgrupListP22[i].GRUP_LN.ToString(), styleRight);
excelService.GetExcelCell(rowBody, 17, dataModel.trgrupListP22[i].FLT_NO1, style);
excelService.GetExcelCell(rowBody, 18, dataModel.trgrupListP22[i].FLT_NO2, style);
}
}
}
重复循环表头
private void TableHead(int iStart, NPOI.SS.UserModel.ISheet sheet1, NPOI.HSSF.UserModel.HSSFWorkbook book, GroupSalesMagVivianViewModel dataModel)
{
// 设置表格样式
HSSFCellStyle styleHeadeLeft = SetExcelCellStyleP21(book, 0, 1, 1);//左對齊有邊框
HSSFCellStyle styleHeadeRight = SetExcelCellStyleP21(book, 2, 0, 0);//右對齊無邊框
HSSFCellStyle styleHeadeCenter = SetExcelCellStyleP21(book, 1, 1, 0);//居中無邊框
HSSFCellStyle styleDataCenter = SetExcelCellStyleP21(book, 1, 1, 1);//居中有邊框
HSSFCellStyle styleDataCenterWrap = SetExcelCellStyleP21(book, 1, 1, 1, true);//居中有邊框換行
NPOI.SS.UserModel.IRow rowHeader1 = sheet1.CreateRow(iStart); // CreateRow 下標從0開始 第一行
ICell rowHeader2 = rowHeader1.CreateCell(0);
rowHeader2.CellStyle = styleHeadeLeft;
//旅行社名稱
ICell rowHeader3 = rowHeader1.CreateCell(1);
rowHeader3.CellStyle = styleHeadeLeft;
rowHeader3.SetCellValue(" 旅行社名稱:");
//旅行社名稱——賦值
ICell rowHeader4 = rowHeader1.CreateCell(2);
rowHeader4.CellStyle = styleHeadeLeft;
rowHeader4.SetCellValue(dataModel.gcnltSalesP21Data.COMP_FNM);
ICell rowHeader5 = rowHeader1.CreateCell(3);
rowHeader5.CellStyle = styleHeadeLeft;
sheet1.SetColumnWidth(3, 10 * 256); //設置某一列的寬度
ICell rowHeader6 = rowHeader1.CreateCell(4);
rowHeader6.CellStyle = styleHeadeLeft;
sheet1.SetColumnWidth(4, 10 * 256); //設置某一列的寬度
ICell rowHeader7 = rowHeader1.CreateCell(5);
rowHeader7.CellStyle = styleHeadeLeft;
ICell rowHeader8 = rowHeader1.CreateCell(6);
rowHeader8.CellStyle = styleHeadeLeft;
NPOI.SS.UserModel.IRow rowHeader9 = sheet1.CreateRow(iStart + 1); // CreateRow 下標從0開始 第二行
ICell rowHeader10 = rowHeader9.CreateCell(0);
rowHeader10.CellStyle = styleHeadeLeft;
//聯絡人
ICell rowHeader11 = rowHeader9.CreateCell(1);
rowHeader11.CellStyle = styleHeadeLeft;
rowHeader11.SetCellValue(" 聯絡人:");
//聯絡人——賦值
ICell rowHeader12 = rowHeader9.CreateCell(2);
rowHeader12.CellStyle = styleHeadeLeft;
rowHeader12.SetCellValue(dataModel.gcnltSalesP21Data.EMP_CNM);
//電話
ICell rowHeader13 = rowHeader9.CreateCell(3);
rowHeader13.CellStyle = styleHeadeLeft;
rowHeader13.SetCellValue(" 電話:");
//電話——賦值
ICell rowHeader14 = rowHeader9.CreateCell(4);
rowHeader14.CellStyle = styleHeadeLeft;
rowHeader14.SetCellValue(dataModel.gcnltSalesP21Data.COMP_TEL);
ICell rowHeader15 = rowHeader9.CreateCell(5);
rowHeader15.CellStyle = styleHeadeLeft;
ICell rowHeader16 = rowHeader9.CreateCell(6);
rowHeader16.CellStyle = styleHeadeLeft;
NPOI.SS.UserModel.IRow rowHeader17 = sheet1.CreateRow(iStart + 2); // CreateRow 下標從0開始 第三行
ICell rowHeader18 = rowHeader17.CreateCell(0);
rowHeader18.CellStyle = styleHeadeLeft;
//出發日期
ICell rowHeader19 = rowHeader17.CreateCell(1);
rowHeader19.CellStyle = styleHeadeLeft;
rowHeader19.SetCellValue(" 出發日期:");
//出發日期——賦值
ICell rowHeader20 = rowHeader17.CreateCell(2);
rowHeader20.CellStyle = styleHeadeLeft;
rowHeader20.SetCellValue(dataModel.gcnltSalesP21Data.LEAV_DT);
//航班
ICell rowHeader21 = rowHeader17.CreateCell(3);
rowHeader21.CellStyle = styleHeadeLeft;
rowHeader21.SetCellValue(" 航班:");
//航班——賦值
ICell rowHeader22 = rowHeader17.CreateCell(4);
rowHeader22.CellStyle = styleHeadeLeft;
rowHeader22.SetCellValue(dataModel.gcnltSalesP21Data.FLT_NO);
ICell rowHeader23 = rowHeader17.CreateCell(5);
rowHeader23.CellStyle = styleHeadeLeft;
ICell rowHeader24 = rowHeader17.CreateCell(6);
rowHeader24.CellStyle = styleHeadeLeft;
NPOI.SS.UserModel.IRow rowHeader25 = sheet1.CreateRow(iStart + 3); // CreateRow 下標從0開始 第四行
ICell rowHeader26 = rowHeader25.CreateCell(0);
rowHeader26.CellStyle = styleHeadeLeft;
ICell rowHeader27 = rowHeader25.CreateCell(1);
rowHeader27.CellStyle = styleHeadeLeft;
rowHeader27.SetCellValue(" 電腦代號:");
ICell rowHeader28 = rowHeader25.CreateCell(2);
rowHeader28.CellStyle = styleHeadeLeft;
rowHeader28.SetCellValue(dataModel.gcnltSalesP21Data.PNR_CD);
ICell rowHeader29 = rowHeader25.CreateCell(3);
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(iStart + 3, iStart + 3, 3, 4));//合并单元格
rowHeader29.CellStyle = styleHeadeLeft;
ICell rowHeader31 = rowHeader25.CreateCell(5);
rowHeader31.CellStyle = styleHeadeLeft;
ICell rowHeader32 = rowHeader25.CreateCell(6);
rowHeader32.CellStyle = styleHeadeLeft;
NPOI.SS.UserModel.IRow rowHeader33 = sheet1.CreateRow(iStart + 4); // CreateRow 下標從0開始 第五行
ICell rowHeader34 = rowHeader33.CreateCell(0);
rowHeader34.CellStyle = styleHeadeLeft;
ICell rowHeader35 = rowHeader33.CreateCell(1);
rowHeader35.CellStyle = styleHeadeLeft;
ICell rowHeader36 = rowHeader33.CreateCell(2);
rowHeader36.CellStyle = styleHeadeLeft;
ICell rowHeader37 = rowHeader33.CreateCell(3);
var region = new NPOI.SS.Util.CellRangeAddress(iStart + 4, iStart + 4, 3, 4);
this.SetRegionBorder((HSSFSheet)sheet1, region, styleHeadeLeft);
//sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(4, 4, 3, 4));
ICell rowHeader38 = rowHeader33.CreateCell(5);
rowHeader38.CellStyle = styleHeadeLeft;
ICell rowHeader39 = rowHeader33.CreateCell(6);
rowHeader39.CellStyle = styleHeadeLeft;
NPOI.SS.UserModel.IRow rowHeader40 = sheet1.CreateRow(iStart + 5); // CreateRow 下標從0開始 第六行
rowHeader40.Height = (short)(330 * 2);//设置行高
ICell rowHeader41 = rowHeader40.CreateCell(0);
rowHeader41.CellStyle = styleHeadeLeft;
sheet1.SetColumnWidth(0, 5 * 256); //設置某一列的寬度
rowHeader41.SetCellValue(" NO ");
ICell rowHeader42 = rowHeader40.CreateCell(1);
rowHeader42.CellStyle = styleHeadeLeft;
rowHeader42.SetCellValue(" 中文姓名 ");
ICell rowHeader43 = rowHeader40.CreateCell(2);
rowHeader43.CellStyle = styleHeadeLeft;
rowHeader43.SetCellValue(" 英文姓名 ");
ICell rowHeader44 = rowHeader40.CreateCell(3);
rowHeader44.CellStyle = styleHeadeLeft;
sheet1.SetColumnWidth(2, 40 * 256); //設置某一列的寬度
rowHeader44.SetCellValue(" 身份證號碼");
//sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(iStart + 5, iStart+5, 3, 4));
var region1 = new NPOI.SS.Util.CellRangeAddress(iStart + 5, iStart + 5, 3, 4);
this.SetRegionBorder((HSSFSheet)sheet1, region1, styleHeadeLeft);
ICell rowHeader46 = rowHeader40.CreateCell(5);
rowHeader46.CellStyle = styleHeadeLeft;
rowHeader46.SetCellValue(" 出生年月日 ");
ICell rowHeader47 = rowHeader40.CreateCell(6);
rowHeader47.CellStyle = styleHeadeLeft;
sheet1.SetColumnWidth(6, 8 * 256); //設置某一列的寬度
rowHeader47.SetCellValue(" 備註 ");
}
/// <summary>
/// jin
/// </summary>
/// <param name="sheet1"> excel中的頁簽</param>
/// <param name="book">excel實體</param>
/// <param name="dataModel">數據Model</param>
protected void ExportExcelP21(NPOI.SS.UserModel.ISheet sheet1, NPOI.HSSF.UserModel.HSSFWorkbook book, GroupSalesMagVivianViewModel dataModel)
{
// 设置表格样式
HSSFCellStyle styleHeadeLeft = SetExcelCellStyleP21(book, 0, 1, 1);//左對齊有邊框
HSSFCellStyle styleHeadeRight = SetExcelCellStyleP21(book, 2, 0, 0);//右對齊無邊框
HSSFCellStyle styleHeadeCenter = SetExcelCellStyleP21(book, 1, 1, 0);//居中無邊框
HSSFCellStyle styleDataCenter = SetExcelCellStyleP21(book, 1, 1, 1);//居中有邊框
HSSFCellStyle styleDataCenterWrap = SetExcelCellStyleP21(book, 1, 1, 1, true);//居中有邊框換行
if (dataModel.gcnltSalesP21Data.paxList21 != null && dataModel.gcnltSalesP21Data.paxList21.Count > 0)
{
int k = 0;
for (int i = 0, j = dataModel.gcnltSalesP21Data.paxList21.Count; i < j; i++)
{
if (i % 38 == 0)
{
if (i != 0)
{
for (int n = 1; n <= 6; n++)
{
sheet1.CreateRow(6 + k++);
}
}
this.TableHead(k, sheet1, book, dataModel);
}
NPOI.SS.UserModel.IRow rowHeader48 = sheet1.CreateRow(k + 6); // CreateRow 下標從0開始 第七行
var strNo = "";
if (dataModel.gcnltSalesP21Data.paxList21[i].FAKE_FG == false)
{
strNo = "* " + (i + 1).ToString();//序號的計算,從1開始
}
else if (dataModel.gcnltSalesP21Data.paxList21[i].FAKE_FG == true)
{
strNo = "" + (i + 1).ToString();//序號的計算,從1開始
}
//NO
ICell rowHeader49 = rowHeader48.CreateCell(0);
rowHeader49.CellStyle = styleHeadeLeft;
rowHeader49.SetCellValue(strNo);
//中文姓名
ICell rowHeader50 = rowHeader48.CreateCell(1);
rowHeader50.CellStyle = styleHeadeLeft;
rowHeader50.SetCellValue(dataModel.gcnltSalesP21Data.paxList21[i].PAX_CNM);
var PAX_ENM = "";
if (dataModel.gcnltSalesP21Data.paxList21[i].FAKE_FG == true)
{
PAX_ENM = dataModel.gcnltSalesP21Data.paxList21[i].PAX_ENML + dataModel.gcnltSalesP21Data.paxList21[i].PAX_ENMF;
}
else if (dataModel.gcnltSalesP21Data.paxList21[i].FAKE_FG == false)
{
PAX_ENM = dataModel.gcnltSalesP21Data.paxList21[i].PAX_ENMF + dataModel.gcnltSalesP21Data.paxList21[i].PAX_ENML;
}
//英文姓名
ICell rowHeader51 = rowHeader48.CreateCell(2);
rowHeader51.CellStyle = styleHeadeLeft;//對齊方式
rowHeader51.SetCellValue(PAX_ENM);//賦值
//身份證號碼
ICell rowHeader52 = rowHeader48.CreateCell(3);
rowHeader52.CellStyle = styleHeadeLeft;
rowHeader52.SetCellValue(dataModel.gcnltSalesP21Data.paxList21[i].ID_NO);
//sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(k + 6, k + 6, 3, 4));
var region1 = new NPOI.SS.Util.CellRangeAddress(k + 6, k + 6, 3, 4);
this.SetRegionBorder((HSSFSheet)sheet1, region1, styleHeadeLeft);
//出生年月日
ICell rowHeader53 = rowHeader48.CreateCell(5);
rowHeader53.CellStyle = styleHeadeLeft;
rowHeader53.SetCellValue(dataModel.gcnltSalesP21Data.paxList21[i].BRTH_DT);
//備註
ICell rowHeader54 = rowHeader48.CreateCell(6);
rowHeader54.CellStyle = styleHeadeLeft;
rowHeader54.SetCellValue("");
k++;
}
}
}
/// <summary>
/// 給單元格設定邊框樣式
/// </summary>
/// <param name="book"> excel實體</param>
/// <param name="align"> 0:左對齊 1:水平居中 2:右對齊</param>
/// <param name="valign">1:垂直居中 其他默認頂部對齊</param>
/// <param name="border"> 0:無邊框 其他四周有1個寬度的邊框</param>
/// <returns></returns>
public HSSFCellStyle SetExcelCellStyleP21(NPOI.HSSF.UserModel.HSSFWorkbook book, int align, int valign, int border, bool wrapText = false)
{
HSSFCellStyle style = book.CreateCellStyle() as HSSFCellStyle;
if (align == 1)
style.Alignment = HorizontalAlignment.Center; // 水平居中
else if (align == 2)
style.Alignment = HorizontalAlignment.Right; // 右對齊
else
style.Alignment = HorizontalAlignment.Left; // 左對齊
if (valign == 1)
style.VerticalAlignment = VerticalAlignment.Center; // 垂直居中
if (border == 0)
{
style.BorderTop = BorderStyle.None;
style.BorderRight = BorderStyle.None;
style.BorderLeft = BorderStyle.None;
style.BorderBottom = BorderStyle.None;
}
else
{
style.BorderTop = BorderStyle.Thin;
style.BorderRight = BorderStyle.Thin;
style.BorderLeft = BorderStyle.Thin;
style.BorderBottom = BorderStyle.Thin;
}
if (wrapText)
style.WrapText = true;
NPOI.SS.UserModel.IFont font = book.CreateFont(); // 創建字體
style.SetFont(font);
font.FontHeightInPoints = 12;
font.FontName = "simsun";
return style;
}