using System; using System.Data; using System.IO; using System.Text; using System.Web; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.XSSF.UserModel; using CallCenterApi.DB; using System.Collections.Generic; using System.Linq; namespace CallCenter.Utility { public class NPOIHelper { private string _title; private string _sheetName; private string _filePath; /// /// 导出到Excel /// /// /// public bool ToExcel(DataTable table, string[] columns = null) { FileStream fs = new FileStream(this._filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite); IWorkbook workBook = new HSSFWorkbook(); if (string.IsNullOrWhiteSpace(this._sheetName)) { this._sheetName = "sheet1"; } ISheet sheet = workBook.CreateSheet(this._sheetName); //处理表格标题 IRow row = sheet.CreateRow(0); row.CreateCell(0).SetCellValue(this._title); sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, table.Columns.Count - 1)); row.Height = 500; ICellStyle cellStyle = workBook.CreateCellStyle(); IFont font = workBook.CreateFont(); font.FontName = "微软雅黑"; font.FontHeightInPoints = 17; cellStyle.SetFont(font); cellStyle.VerticalAlignment = VerticalAlignment.Center; cellStyle.Alignment = HorizontalAlignment.Center; row.Cells[0].CellStyle = cellStyle; //处理表格列头 row = sheet.CreateRow(1); if (columns == null) { for (int i = 0; i < table.Columns.Count; i++) { row.CreateCell(i).SetCellValue(table.Columns[i].ColumnName); row.Height = 350; sheet.AutoSizeColumn(i); } } else { for (int i = 0; i < columns.Length; i++) { row.CreateCell(i).SetCellValue(columns[i]); row.Height = 350; sheet.AutoSizeColumn(i); } } //处理数据内容 for (int i = 0; i < table.Rows.Count; i++) { row = sheet.CreateRow(2 + i); row.Height = 250; for (int j = 0; j < table.Columns.Count; j++) { row.CreateCell(j).SetCellValue(table.Rows[i][j].ToString()); sheet.SetColumnWidth(j, 256 * 15); } } //写入数据流 workBook.Write(fs); fs.Flush(); fs.Close(); return true; } /// /// 导出到Excel /// /// /// /// 空字符串或null的话默认sheet1 /// 自定义表格列头,默认null /// public bool ToExcel(DataTable table, string title, string sheetName, string filePath, string[] columns = null) { this._title = title; this._sheetName = sheetName; this._filePath = filePath; return ToExcel(table, columns); } /// /// 弹出下载框导出excel /// /// /// /// public string ExportToExcel(string Name, DataTable dt, string[] cols = null,int iswork=0) { try { //if (dt.Rows.Count > 0) //{ 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 = HorizontalAlignment.Center; HeadercellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index; HeadercellStyle.FillPattern = FillPattern.SolidForeground; HeadercellStyle.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index; //字体 if (iswork>0) { IDataFormat format = workbook.CreateDataFormat(); HeadercellStyle.DataFormat = format.GetFormat("[DbNum2][$-804]0"); } NPOI.SS.UserModel.IFont headerfont = workbook.CreateFont(); headerfont.Boldweight = (short)FontBoldWeight.Bold; headerfont.FontHeightInPoints = 12; HeadercellStyle.SetFont(headerfont); //用column name 作为列名 int icolIndex = 0; IRow headerRow = sheet.CreateRow(0); if (cols == null || (cols != null && cols.Length == 0)) { foreach (DataColumn dc in dt.Columns) { ICell cell = headerRow.CreateCell(icolIndex); cell.SetCellValue(dc.ColumnName); cell.CellStyle = HeadercellStyle; icolIndex++; } } else { foreach (string dc in cols) { ICell cell = headerRow.CreateCell(icolIndex); cell.SetCellValue(dc); cell.CellStyle = HeadercellStyle; icolIndex++; } } ICellStyle cellStyle = workbook.CreateCellStyle(); //为避免日期格式被Excel自动替换,所以设定 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); //建立内容行 int iRowIndex = 0; foreach (DataRow dr in dt.Rows) { int iCellIndex = 0; IRow irow = sheet.CreateRow(iRowIndex + 1); for (int i = 0; i < dt.Columns.Count; i++) { string strsj = string.Empty; if (dr[i] != null) { strsj = dr[i].ToString(); } ICell cell = irow.CreateCell(iCellIndex); cell.SetCellValue(strsj); cell.CellStyle = cellStyle; iCellIndex++; } iRowIndex++; } //自适应列宽度 for (int i = 0; i < icolIndex; i++) { sheet.AutoSizeColumn(i); } using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); HttpContext curContext = HttpContext.Current; // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = Encoding.UTF8; curContext.Response.Charset = ""; curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(Name + ".xls", Encoding.UTF8)); curContext.Response.BinaryWrite(ms.GetBuffer()); workbook = null; ms.Close(); ms.Dispose(); curContext.Response.End(); } //} return ""; } catch { return "导出失败!"; } } /// /// 合并单元格 /// /// 要合并单元格所在的sheet /// 开始行的索引 /// 结束行的索引 /// 开始列的索引 /// 结束列的索引 public static void SetCellRangeAddress(ISheet sheet, int rowstart, int rowend, int colstart, int colend) { CellRangeAddress cellRangeAddress = new CellRangeAddress(rowstart, rowend, colstart, colend); sheet.AddMergedRegion(cellRangeAddress); } /// /// 工单类型弹出下载框导出excel /// /// /// /// 仪器或试剂 /// public string ExportToExcelForGDLX(string Name, DataTable dt, string typeclass, List colnames, List erows, List secolnames) { 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 = HorizontalAlignment.Center; HeadercellStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index; HeadercellStyle.FillPattern = FillPattern.SolidForeground; HeadercellStyle.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.SkyBlue.Index; //字体 NPOI.SS.UserModel.IFont headerfont = workbook.CreateFont(); headerfont.Boldweight = (short)FontBoldWeight.Bold; headerfont.FontHeightInPoints = 12; HeadercellStyle.SetFont(headerfont); //用column name 作为列名 int icolIndex = 0; IRow headerRow = sheet.CreateRow(0); for (int i = 0; i < colnames.Count; i++) { ICell cell = headerRow.CreateCell(i); cell.SetCellValue(colnames[i]); cell.CellStyle = HeadercellStyle; //SetCellRangeAddress(sheet, 0, 0, erows[i * 2], erows[i * 2 + 1]); } for (int k = 0; k < erows.Count / 2; k++) { SetCellRangeAddress(sheet, 0, 0, erows[k * 2], erows[k * 2 + 1]); } //添加第二行标题 IRow SecRow = sheet.CreateRow(1); for (int i = 0; i < secolnames.Count; i++) { ICell cell = SecRow.CreateCell(i); cell.SetCellValue(secolnames[i].ToString()); } ICellStyle cellStyle = workbook.CreateCellStyle(); //为避免日期格式被Excel自动替换,所以设定 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); //建立内容行 int iRowIndex = 0; foreach (DataRow dr in dt.Rows) { int iCellIndex = 0; IRow irow = sheet.CreateRow(iRowIndex + 2); for (int i = 0; i < dt.Columns.Count; i++) { string strsj = string.Empty; if (dr[i] != null) { strsj = dr[i].ToString(); } ICell cell = irow.CreateCell(iCellIndex); cell.SetCellValue(strsj); cell.CellStyle = cellStyle; iCellIndex++; } iRowIndex++; } //自适应列宽度 for (int i = 0; i < icolIndex; i++) { sheet.AutoSizeColumn(i); } using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); HttpContext curContext = HttpContext.Current; // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = Encoding.UTF8; curContext.Response.Charset = ""; curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(Name + ".xls", Encoding.UTF8)); curContext.Response.BinaryWrite(ms.GetBuffer()); workbook = null; ms.Close(); ms.Dispose(); curContext.Response.End(); } return ""; } catch (Exception e) { return "导出失败!" + e.Message; } } /// /// 导入excel转换为datatable /// /// /// /// public DataTable ExcelToTable(HttpPostedFile upfile, int headrow) { DataTable dt = new DataTable(); IWorkbook workbook = null; Stream stream = upfile.InputStream; string suffix = upfile.FileName.Substring(upfile.FileName.LastIndexOf(".") + 1).ToLower(); if (suffix == "xlsx") // 2007版本 { workbook = new XSSFWorkbook(stream); } else if (suffix == "xls") // 2003版本 { workbook = new HSSFWorkbook(stream); } //获取excel的第一个sheet ISheet sheet = workbook.GetSheetAt(0); //获取sheet的第一行 IRow headerRow = sheet.GetRow(headrow); //一行最后一个方格的编号 即总的列数 int cellCount = headerRow.LastCellNum; //最后一列的标号 即总的行数 int rowCount = sheet.LastRowNum; //列名 for (int i = 0; i < cellCount; i++) { dt.Columns.Add(headerRow.GetCell(i).ToString()); } for (int i = (sheet.FirstRowNum + headrow + 1); i <= sheet.LastRowNum; i++) { DataRow dr = dt.NewRow(); IRow row = sheet.GetRow(i); for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null) { dr[j] = row.GetCell(j).ToString(); } } dt.Rows.Add(dr); } sheet = null; workbook = null; return dt; } /// /// 导入excel转换为datatable /// /// /// /// public DataTable ExcelToTable(string fileName, int headrow) { DataTable dt = new DataTable(); IWorkbook workbook = null; Stream stream = new FileStream(fileName, FileMode.OpenOrCreate); string suffix = fileName.Substring(fileName.LastIndexOf(".") + 1).ToLower(); if (suffix == "xlsx") // 2007版本 { workbook = new XSSFWorkbook(stream); } else if (suffix == "xls") // 2003版本 { workbook = new HSSFWorkbook(stream); } //获取excel的第一个sheet ISheet sheet = workbook.GetSheetAt(0); //获取sheet的第一行 IRow headerRow = sheet.GetRow(headrow); //一行最后一个方格的编号 即总的列数 int cellCount = headerRow.LastCellNum; //最后一列的标号 即总的行数 int rowCount = sheet.LastRowNum; //列名 for (int i = 0; i < cellCount; i++) { dt.Columns.Add(headerRow.GetCell(i).ToString()); } for (int i = (sheet.FirstRowNum + headrow + 1); i <= sheet.LastRowNum; i++) { DataRow dr = dt.NewRow(); IRow row = sheet.GetRow(i); for (int j = row.FirstCellNum; j < cellCount; j++) { if (row.GetCell(j) != null) { dr[j] = row.GetCell(j).ToString(); } } dt.Rows.Add(dr); } sheet = null; workbook = null; return dt; } /// /// 简报导出 /// /// /// public string MarketExportToExcel(string stime,string etime,Market market ) { try { HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); ICellStyle cellStyle = workbook.CreateCellStyle(); //为避免日期格式被Excel自动替换,所以设定 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); ICellStyle cellStylebt = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt = workbook.CreateFont(); cellfontbt.Boldweight = (short)FontBoldWeight.Bold; cellStylebt.SetFont(cellfontbt); cellStylebt.VerticalAlignment = VerticalAlignment.Center; cellStylebt.Alignment = HorizontalAlignment.Center; IRow irow1 = sheet.CreateRow(1); ICell cell1 = irow1.CreateCell(0); cell1.SetCellValue("时间:" + stime + " 至 " + etime); cell1.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, 7)); //((HSSFSheet)sheet).SetEnclosedBorderOfRegion(new CellRangeAddress(1, 1, 0, 7), BorderStyle.Thin, NPOI.HSSF.Util.HSSFColor.Black.Index); #region 产品投诉情况 List dt1 = market.product ; IRow irow2 = sheet.CreateRow(2); ICell cell2 = irow2.CreateCell(0); cell2.SetCellValue("产品投诉情况"); cell2.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(2, 2, 0, 7)); int dtrow = 3; if (dt1.Count >0) { int dt = 0; int a = dt1.Count / 3; float b = dt1.Count % 3; if (b >0) a = a + 1; dtrow += a; List irow3list = new List(); for (int i =0;i Factory1) { string msg = ""; switch (j) { case 0: msg = Factory1[i * 2].name; break; case 1: msg = Factory1[i * 2].number.ToString(); break; case 2: msg = Factory1[i * 2].proportion; break; case 3: msg = Factory1[i * 2 + 1].name; break; case 4: msg = Factory1[i * 2 + 1].number.ToString(); break; case 5: msg = Factory1[i * 2 + 1].proportion; break; } return msg; } /// /// 投诉产品日期分布表 /// /// /// public string DistributionToExcel(DateTime datetime, Product product) { try { HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); ICellStyle cellStyle = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont(); cellfont.Boldweight = (short)FontBoldWeight.Normal; cellStyle.SetFont(cellfont); ICellStyle cellStylebt = workbook.CreateCellStyle(); cellStylebt.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; cellStylebt.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; cellStylebt.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; cellStylebt.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; NPOI.SS.UserModel.IFont cellfontbt = workbook.CreateFont(); cellfontbt.Boldweight = (short)FontBoldWeight.Bold; cellStylebt.SetFont(cellfontbt); cellStylebt.VerticalAlignment = VerticalAlignment.Center; cellStylebt.Alignment = HorizontalAlignment.Center; IRow irow1 = sheet.CreateRow(0); ICell cell1 = irow1.CreateCell(0); cell1.SetCellValue(datetime.Year +"年"+datetime .Month +"月份投诉产品日期分布情况表"); cell1.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 13)); #region 产品投诉情况 ICellStyle cellStylebt1 = workbook.CreateCellStyle(); cellStylebt1.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; cellStylebt1.SetFont(cellfontbt); cellStylebt1.VerticalAlignment = VerticalAlignment.Center; cellStylebt1.Alignment = HorizontalAlignment.Center; IRow irow2 = sheet.CreateRow(1); ICell cell2 = irow2.CreateCell(0); ICellStyle style13 = workbook.CreateCellStyle(); style13.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; style13.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; style13.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; style13.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; style13.BorderDiagonalLineStyle = BorderStyle.Thin; style13.BorderDiagonal = BorderDiagonal.Backward; style13.BorderDiagonalColor = IndexedColors.Black .Index; string sb = " 数量\n日期"; // StringBuilder sb = new StringBuilder(); // sb.AppendLine("数量".PadLeft(15));//该行不足长度10在左侧填空格 // sb.AppendLine("日期".PadRight(15));//该行不足长度10在右侧填空格 cell2.SetCellValue(sb); cell2.CellStyle = cellStylebt; style13.WrapText = true; irow2.GetCell(0).CellStyle = style13; sheet.AddMergedRegion(new CellRangeAddress(1, 2, 0,0 )); ICell cell6 = irow2.CreateCell(1); cell6.SetCellValue("投诉产品"); cell6.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(1, 1, 1, 1)); for (int i=0;i<5;i ++) { string msg = ""; switch (i) { case 0: msg = datetime.AddMonths(-11).Month + "-" + datetime.AddMonths(-3).Month + "月份日期"; break; case 1: msg = datetime.AddMonths(-2).Month + "月份日期"; break; case 2: msg = datetime.AddMonths(-1).Month + "月份日期"; break; case 3: msg = datetime.Month + "月份日期"; break; case 4: msg = "不清楚日期"; break; } ICell cell3 = irow2.CreateCell(i *2+ 2 ); cell3.SetCellValue(msg); cell3.CellStyle = cellStylebt; ICell cell4 = irow2.CreateCell(i * 2 + 3); cell4.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(1, 1, i * 2 + 2, i * 2 + 3)); } IRow irow3 = sheet.CreateRow(2); for (int i = 0; i < 11; i++) { string msg = ""; if (i ==0) { msg = "数量"; } else { if (i % 2 == 0) { msg = "占比"; } else { msg = "数量"; } } ICell cell4 = irow3.CreateCell(i+1); cell4.SetCellValue(msg); cell4.CellStyle = cellStylebt; } List dt1 = product.dates; if (dt1!=null ) { for (int i=0;i < dt1.Count;i ++) { IRow irow4 = sheet.CreateRow(3 + i); string msg = ""; for (int j = 0; j < 12; j ++) { switch (j ) { case 0: msg = dt1[i].name; break; case 1: msg = dt1[i].total.ToString(); break; case 2: msg = dt1[i].MonthCount1 .ToString (); break; case 3: msg = dt1[i].MonthCountmix1 .ToString(); break; case 4: msg = dt1[i].MonthCount2.ToString(); break; case 5: msg = dt1[i].MonthCountmix2.ToString(); break; case 6: msg = dt1[i].MonthCount3.ToString(); break; case 7: msg = dt1[i].MonthCountmix3.ToString(); break; case 8: msg = dt1[i].MonthCount4.ToString(); break; case 9: msg = dt1[i].MonthCountmix4.ToString(); break; case 10: msg = dt1[i].MonthCount5.ToString(); break; case 11: msg = dt1[i].MonthCountmix5.ToString(); break; } ICell cell5 = irow4.CreateCell(j); cell5.SetCellValue(msg); cell5.CellStyle = cellStylebt; } } } int t = dt1.Count + 2;int count = 0; List Factory1 = product.factory; List Factory2 = product.problem; List Factory3 = product.product; int factory = 0, problem = 0, productcode = 0; if (Factory1 != null) factory = (Factory1.Count / 2) + (0 == Factory1.Count % 2 ? 0 : 1); if (Factory2 != null) problem = Factory2.Count; if (Factory3 != null) productcode = Factory3.Count; bool istrue = true; int a = 0, total = problem + productcode; if (factory>(total)) { count = factory; a = factory - total; } else { istrue = false; count = total; } IRow irow5 = sheet.CreateRow(t+1); ICell cell7 = irow5.CreateCell(0); cell7.SetCellValue("工\n厂\n投\n诉\n占\n比\n"); cell7.CellStyle = cellStylebt; cell7.CellStyle.WrapText=true ; sheet.AddMergedRegion(new CellRangeAddress(t+1, t+ count, 0, 0)); ICell cell10 = irow5.CreateCell(7); cell10.SetCellValue("各\n质\n量\n问\n题\n占\n比\n"); cell10.CellStyle = cellStylebt; cell10.CellStyle.WrapText = true; int structure = t + problem; if (istrue) { if (a >1) { structure = t + problem + a / 2; sheet.AddMergedRegion(new CellRangeAddress(t+1, t + problem + a / 2, 7, 7)); } else { structure = t + problem; sheet.AddMergedRegion(new CellRangeAddress(t+1, t + problem, 7, 7)); } } else sheet.AddMergedRegion(new CellRangeAddress(t+1, t + problem, 7, 7)); IRow irow7 = sheet.CreateRow(structure+1); ICell cell11 = irow7.CreateCell(7); cell11.SetCellValue("结\n构\n占\n比\n"); cell11.CellStyle = cellStylebt; cell11.CellStyle.WrapText = true; if (istrue) { if (a > 1) sheet.AddMergedRegion(new CellRangeAddress(structure + 1, structure+ productcode+a/2, 7, 7)); else sheet.AddMergedRegion(new CellRangeAddress(structure + 1, structure + productcode+a, 7, 7)); } else sheet.AddMergedRegion(new CellRangeAddress(structure + 1, structure + productcode, 7, 7)); if (Factory1 != null) { for (int i = 0; i < count; i++) { if (i ==0 || t + i== structure) { if (Factory1.Count > i*2) { for (int j = 0; j < 6; j++) { string msg = ReturnMsg(j, i, Factory1); if (i == 0) { ICell cell8 = irow5.CreateCell(j + 1); cell8.SetCellValue(msg); cell8.CellStyle = cellStylebt; } else { ICell cell9 = irow7.CreateCell(j + 1); cell9.SetCellValue(msg); cell9.CellStyle = cellStylebt; } } } if (i ==0) { for (int z = 0; z < 3; z++) { switch (z) { case 0: ICell cell12 = irow5.CreateCell(8); cell12.SetCellValue(Factory2[0].name ); cell12.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t+1, t+1 , 8, 9)); ICell cell22 = irow5.CreateCell(9); cell22.CellStyle = cellStylebt; break; case 1: ICell cell13 = irow5.CreateCell(10); cell13.SetCellValue(Factory2[0].number .ToString ()); cell13.CellStyle = cellStylebt; break; case 2: ICell cell14 = irow5.CreateCell(11); cell14.SetCellValue(Factory2[0].proportion); cell14.CellStyle = cellStylebt; break; } } } else { ICell cell119 = irow7.CreateCell(0); cell119.CellStyle = cellStylebt; for (int z = 0; z < 3; z++) { switch (z) { case 0: ICell cell15 = irow7.CreateCell(8); cell15.SetCellValue(Factory3[0].name); cell15.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(structure+1, structure+1, 8, 9)); ICell cell31 = irow7.CreateCell(9); cell15.CellStyle = cellStylebt; break; case 1: ICell cell16 = irow7.CreateCell(10); cell16.SetCellValue(Factory3[0].number.ToString()); cell16.CellStyle = cellStylebt; break; case 2: ICell cell17= irow7.CreateCell(11); cell17.SetCellValue(Factory3[0].proportion); cell17.CellStyle = cellStylebt; break; } } } } else { IRow irow6 = sheet.CreateRow(t+1 + i); if (Factory1.Count %2!=0) { if (i * 2+1 < Factory1.Count) { for (int j = 0; j < 6; j++) { string msg = ReturnMsg(j, i, Factory1); ICell cell18 = irow6.CreateCell(j + 1); cell18.SetCellValue(msg); cell18.CellStyle = cellStylebt; } } else if (i * 2 + 1 == Factory1.Count) { for (int j = 0; j < 3; j++) { string msg = ReturnMsg(j, i, Factory1); ICell cell18 = irow6.CreateCell(j + 1); cell18.SetCellValue(msg); cell18.CellStyle = cellStylebt; } } } else { if (i * 2 < Factory1.Count) { for (int j = 0; j < 6; j++) { string msg = ReturnMsg(j, i, Factory1); ICell cell18 = irow6.CreateCell(j + 1); cell18.SetCellValue(msg); cell18.CellStyle = cellStylebt; } } } int b = 0; if (a >1) { b= (a / 2) + (0 == a % 2 ? 0 : 1); } if (i < Factory2.Count -1) { for (int z = 0; z < 3; z++) { switch (z) { case 0: ICell cell8 = irow6.CreateCell(8); cell8.SetCellValue(Factory2[i].name); cell8.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t+1 + i, t+1 + i, 8, 9)); ICell cell22 = irow6.CreateCell(9); cell22.CellStyle = cellStylebt; break; case 1: ICell cell9 = irow6.CreateCell(10); cell9.SetCellValue(Factory2[i].number.ToString()); cell9.CellStyle = cellStylebt; break; case 2: ICell cell12 = irow6.CreateCell(11); cell12.SetCellValue(Factory2[i].proportion); cell12.CellStyle = cellStylebt; break; } } } else if (i == Factory2.Count-1 ) { for (int z = 0; z < 3; z++) { string msg = ""; switch (z) { case 0: ICell cell8 = irow6.CreateCell(8); cell8.SetCellValue(Factory2[i].name); cell8.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t +1+ i, t+1 + i+b , 8, 9)); if (istrue ) { ICell cell22 = irow6.CreateCell(9); cell22.CellStyle = cellStylebt; } break; case 1: ICell cell9 = irow6.CreateCell(10); cell9.SetCellValue(Factory2[i].number.ToString()); cell9.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t+1 + i, t+1 + i + b, 10, 10)); break; case 2: ICell cell12 = irow6.CreateCell(11); cell12.SetCellValue(Factory2[i].proportion); cell12.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t+1 + i, t+1 + i + b, 11, 11)); break; } } } if (i <( Factory3.Count + Factory2.Count+b -1)&& i>= Factory2.Count + b) { for (int z = 0; z < 3; z++) { switch (z) { case 0: ICell cell8 = irow6.CreateCell(8); cell8.SetCellValue(Factory3[i- Factory2.Count -b ].name); cell8.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t +1+ i, t +1+ i, 8, 9)); ICell cel27 = irow6.CreateCell(9); cel27.CellStyle = cellStylebt; break; case 1: ICell cell9 = irow6.CreateCell(10); cell9.SetCellValue(Factory3[i - Factory2.Count - b ].number.ToString()); cell9.CellStyle = cellStylebt; break; case 2: ICell cell12 = irow6.CreateCell(11); cell12.SetCellValue(Factory3[i - Factory2.Count - b ].proportion); cell12.CellStyle = cellStylebt; break; } } } else if ( i== Factory2.Count + b+ Factory3.Count-1 ) { for (int z = 0; z < 3; z++) { switch (z) { case 0: ICell cell8 = irow6.CreateCell(8); cell8.SetCellValue(Factory3[i - Factory2.Count - b].name); cell8.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t +1+ i, t+1 + i + b, 8, 9)); break; case 1: ICell cell9 = irow6.CreateCell(10); cell9.SetCellValue(Factory3[i - Factory2.Count - b].number.ToString()); cell9.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t + 1 + i, t + 1 + i + b, 10, 10)); break; case 2: ICell cell12 = irow6.CreateCell(11); cell12.SetCellValue(Factory3[i - Factory2.Count - b].proportion); cell12.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t + 1 + i, t + 1 + i + b, 11, 11)); break; } } } if ( i == Factory2.Count) { ICell cell120 = irow6.CreateCell(7); cell120.CellStyle = cellStylebt; ICell cell124 = irow6.CreateCell(9); cell124.CellStyle = cellStylebt; ICell cell125 = irow6.CreateCell(10); cell125.CellStyle = cellStylebt; ICell cell126 = irow6.CreateCell(11); cell126.CellStyle = cellStylebt; } if (!istrue ) { if (i * 2>= Factory1.Count) { ICell cell119 = irow6.CreateCell(0); cell119.CellStyle = cellStylebt; } if (i *2 +1>= Factory1.Count&i < Factory2.Count) { ICell cell119 = irow6.CreateCell(7); cell119.CellStyle = cellStylebt; } if (i > Factory2.Count) { ICell cell119 = irow6.CreateCell(7); cell119.CellStyle = cellStylebt; } if (i == count - 1) { ICell cell119 = irow6.CreateCell(1); cell119.CellStyle = cellStylebt1; ICell cell121 = irow6.CreateCell(2); cell121.CellStyle = cellStylebt1; ICell cell132 = irow6.CreateCell(3); cell132.CellStyle = cellStylebt1; ICell cell128 = irow6.CreateCell(4); cell128.CellStyle = cellStylebt1; ICell cell129 = irow6.CreateCell(5); cell129.CellStyle = cellStylebt1; ICell cell130 = irow6.CreateCell(6); cell130.CellStyle = cellStylebt1; ICell cell131 = irow6.CreateCell(9); cell131.CellStyle = cellStylebt1; } } else if (i == count - 1) { ICell cell119 = irow6.CreateCell(0); cell119.CellStyle = cellStylebt; ICell cell121 = irow6.CreateCell(7); cell121.CellStyle = cellStylebt; ICell cell122 = irow6.CreateCell(4); cell122.CellStyle = cellStylebt; ICell cell123 = irow6.CreateCell(5); cell123.CellStyle = cellStylebt; ICell cell124 = irow6.CreateCell(6); cell124.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(t + 1 + i, t + 1 + i, 4, 6)); ICell cell132 = irow6.CreateCell(8); cell132.CellStyle = cellStylebt; ICell cell128 = irow6.CreateCell(9); cell128.CellStyle = cellStylebt; ICell cell129 = irow6.CreateCell(10); cell129.CellStyle = cellStylebt; ICell cell130 = irow6.CreateCell(11); cell130.CellStyle = cellStylebt; // sheet.AddMergedRegion(new CellRangeAddress(t + 1 + i, t + 1 + i, 8, 11)); } } } } #endregion //自适应列宽度 for (int i = 0; i < 12; i++) { // sheet.AutoSizeColumn(i); sheet.SetColumnWidth(i, 15 * 256); } using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); HttpContext curContext = HttpContext.Current; // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = Encoding.UTF8; curContext.Response.Charset = ""; curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("投诉产品日期分布表" + ".xls", Encoding.UTF8)); curContext.Response.BinaryWrite(ms.GetBuffer()); workbook = null; ms.Close(); ms.Dispose(); curContext.Response.End(); } return ""; } catch { return "导出失败!"; } } public string Complainthandling(DateTime stime, DateTime etime, List complaints,string maxarea,string minarea) { try { HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); ICellStyle cellStyle = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont(); cellfont.Boldweight = (short)FontBoldWeight.Normal; cellfont.FontHeight = 300; cellStyle.SetFont(cellfont); ICellStyle cellStylebt = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt = workbook.CreateFont(); cellStylebt.SetFont(cellfontbt); cellStylebt.VerticalAlignment = VerticalAlignment.Center; cellStylebt.Alignment = HorizontalAlignment.Center; #region 标题 ICellStyle cellStylebt1 = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt1 = workbook.CreateFont(); cellfontbt1.Boldweight = (short)FontBoldWeight.Bold; cellfontbt1.FontHeight = 500; cellStylebt1.SetFont(cellfontbt1); cellStylebt1.VerticalAlignment = VerticalAlignment.Center; cellStylebt1.Alignment = HorizontalAlignment.Center; IRow irow1 = sheet.CreateRow(0); ICell cell1 = irow1.CreateCell(0); cell1.SetCellValue("各大区投诉处理情况("+ stime.Month + "月"+ stime .Day + "-"+ etime .Day + "日)"); cell1.CellStyle = cellStylebt1; sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10)); #endregion #region 说明 ICellStyle cellStylebt2 = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt2 = workbook.CreateFont(); cellfontbt2.Boldweight = (short)FontBoldWeight.Bold; cellfontbt2.FontHeight = 300; cellStylebt2.SetFont(cellfontbt2); cellStylebt2.WrapText = true;//设置换行这个要先设置 cellStylebt2.VerticalAlignment = VerticalAlignment.Center; cellStylebt2.Alignment = HorizontalAlignment.Center; IRow irow2 = sheet.CreateRow(1); ICell cell2 = irow2.CreateCell(0); cell2.SetCellValue(" " + stime.Month + "月" + stime.Day + "日-" + etime.Month + "月" + + etime.Day + "日共接400热线投诉"+ complaints [complaints.Count -1].complaintnumber + "起," + "待分派投诉"+ complaints[complaints.Count - 1].assignmentnumber + "起,待处理投诉" + complaints[complaints.Count - 1].pendingnumber + "起,已处理投诉" + complaints[complaints.Count - 1].processednumber + "起,占比" + complaints[complaints.Count - 1].processedrate + "%,处理中投诉" + complaints[complaints.Count - 1].processingnumber + "起,占比" + complaints[complaints.Count - 1].processingnumberrate + "。19个大区中,"+ maxarea + "大区处理率最高,"+minarea +"大区处理率最低。"); cell2.CellStyle = cellStylebt2; sheet.AddMergedRegion(new CellRangeAddress(1, 5, 0, 10)); #endregion ICellStyle cellStylebt3 = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt3 = workbook.CreateFont(); cellfontbt3.Boldweight = (short)FontBoldWeight.Bold; cellfontbt3.FontHeight = 200; cellStylebt3.SetFont(cellfontbt3); cellStylebt3.VerticalAlignment = VerticalAlignment.Center; cellStylebt3.Alignment = HorizontalAlignment.Center; IRow irow3 = sheet.CreateRow(6); string [] cols= { "序号", "大区", "投诉起数", "待分派投诉", "当日分派率", "待处理投诉", "处理中投诉", "已处理投诉", "处理率", "公关经理跟单率" }; int icolIndex = 0; foreach (string dc in cols) { ICell cell = irow3.CreateCell(icolIndex); cell.SetCellValue(dc); cell.CellStyle = cellStylebt3; icolIndex++; } for (int i=0;i < complaints.Count -1;i ++) { IRow irow4 = sheet.CreateRow(7+i ); for (int j=0; j < 10; j++) { switch (j ) { case 0: ICell cell = irow4.CreateCell(j); cell.SetCellValue(complaints[i].serialnumbe); cell.CellStyle = cellStylebt; break; case 1: ICell cell4 = irow4.CreateCell(j); cell4.SetCellValue(complaints[i].area); cell4.CellStyle = cellStylebt; break; case 2: ICell cel5 = irow4.CreateCell(j); cel5.SetCellValue(complaints[i].complaintnumber); cel5.CellStyle = cellStylebt; break; case 3: ICell cel6 = irow4.CreateCell(j); cel6.SetCellValue(complaints[i].assignmentnumber); cel6.CellStyle = cellStylebt; break; case 4: ICell cel7 = irow4.CreateCell(j); cel7.SetCellValue(complaints[i].assignmentrate); cel7.CellStyle = cellStylebt; break; case 5: ICell cel8 = irow4.CreateCell(j); cel8.SetCellValue(complaints[i].pendingnumber); cel8.CellStyle = cellStylebt; break; case 6: ICell cel9 = irow4.CreateCell(j); cel9.SetCellValue(complaints[i].processingnumber); cel9.CellStyle = cellStylebt; break; case 7: ICell cell0 = irow4.CreateCell(j); cell0.SetCellValue(complaints[i].processednumber); cell0.CellStyle = cellStylebt; break; case 8: ICell cell11 = irow4.CreateCell(j); cell11.SetCellValue(complaints[i].processedrate); cell11.CellStyle = cellStylebt; break; case 9: ICell cell12 = irow4.CreateCell(j); cell12.SetCellValue(complaints[i].documentaryrate); cell12.CellStyle = cellStylebt; break; } } } IRow irow5 = sheet.CreateRow(7+ complaints.Count - 1); for (int j = 0; j < 9; j++) { switch (j) { case 0: ICell cell = irow5.CreateCell(j); cell.SetCellValue(complaints[complaints.Count -1].area ); cell.CellStyle = cellStylebt; sheet.AddMergedRegion(new CellRangeAddress(7 + complaints.Count - 1, 7 + complaints.Count - 1, 0, 1)); break; case 1: ICell cel5 = irow5.CreateCell(j+1); cel5.SetCellValue(complaints[complaints.Count - 1].complaintnumber); cel5.CellStyle = cellStylebt; break; case 2: ICell cel6 = irow5.CreateCell(j+1); cel6.SetCellValue(complaints[complaints.Count - 1].assignmentnumber); cel6.CellStyle = cellStylebt; break; case 3: ICell cel7 = irow5.CreateCell(j+1); cel7.SetCellValue(complaints[complaints.Count - 1].assignmentrate); cel7.CellStyle = cellStylebt; break; case 4: ICell cel8 = irow5.CreateCell(j+1); cel8.SetCellValue(complaints[complaints.Count - 1].pendingnumber); cel8.CellStyle = cellStylebt; break; case 5: ICell cel9 = irow5.CreateCell(j+1); cel9.SetCellValue(complaints[complaints.Count - 1].processingnumber); cel9.CellStyle = cellStylebt; break; case 6: ICell cell0 = irow5.CreateCell(j+1); cell0.SetCellValue(complaints[complaints.Count - 1].processednumber); cell0.CellStyle = cellStylebt; break; case 7: ICell cell11 = irow5.CreateCell(j+1); cell11.SetCellValue(complaints[complaints.Count - 1].processedrate); cell11.CellStyle = cellStylebt; break; case 8: ICell cell12 = irow5.CreateCell(j+1); cell12.SetCellValue(complaints[complaints.Count - 1].documentaryrate); cell12.CellStyle = cellStylebt; break; } } //自适应列宽度 for (int i = 0; i < 10; i++) { // sheet.SetColumnWidth(i, 12 * 400); } using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); HttpContext curContext = HttpContext.Current; // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = Encoding.UTF8; curContext.Response.Charset = ""; curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("各大区投诉处理情况" + ".xls", Encoding.UTF8)); curContext.Response.BinaryWrite(ms.GetBuffer()); workbook = null; ms.Close(); ms.Dispose(); curContext.Response.End(); } return ""; } catch { return "导出失败!"; } } public string AftersaleToExcel(DateTime stime, DateTime etime, List complaints, string maxarea, string minarea,int pendingnumber) { try { HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); ICellStyle cellStyle = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfont = workbook.CreateFont(); cellfont.Boldweight = (short)FontBoldWeight.Normal; cellfont.FontHeight = 300; cellStyle.SetFont(cellfont); ICellStyle cellStylebt = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt = workbook.CreateFont(); cellStylebt.SetFont(cellfontbt); cellStylebt.VerticalAlignment = VerticalAlignment.Center; cellStylebt.Alignment = HorizontalAlignment.Center; #region 标题 ICellStyle cellStylebt1 = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt1 = workbook.CreateFont(); cellfontbt1.Boldweight = (short)FontBoldWeight.Bold; cellfontbt1.FontHeight = 500; cellStylebt1.SetFont(cellfontbt1); cellStylebt1.VerticalAlignment = VerticalAlignment.Center; cellStylebt1.Alignment = HorizontalAlignment.Center; IRow irow1 = sheet.CreateRow(0); ICell cell1 = irow1.CreateCell(0); cell1.SetCellValue("售后APP工单进度统计表(" + stime.Month + "月" + stime.Day + "-" + etime.Month + "月" + etime.Day + "日)"); cell1.CellStyle = cellStylebt1; sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 11)); #endregion #region 说明 ICellStyle cellStylebt2 = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt2 = workbook.CreateFont(); cellfontbt2.Boldweight = (short)FontBoldWeight.Bold; cellfontbt2.FontHeight = 300; cellStylebt2.SetFont(cellfontbt2); cellStylebt2.WrapText = true;//设置换行这个要先设置 cellStylebt2.VerticalAlignment = VerticalAlignment.Center; cellStylebt2.Alignment = HorizontalAlignment.Center; IRow irow2 = sheet.CreateRow(1); ICell cell2 = irow2.CreateCell(0); cell2.SetCellValue(" "+ stime.Year +"年" + stime.Month + "月" + stime.Day + "日-" + etime.Month + "月" + +etime.Day + "日共有售后APP工单" + complaints[complaints.Count - 1].total + "条," + "已完结工单" + complaints[complaints.Count - 1].processednumber + "条,完结率" + complaints[complaints.Count - 1].processedrate + ",待分派工单" + complaints[complaints.Count - 1].assignmentnumber + "条,待处理工单" + pendingnumber + "条。19个大区中," + maxarea + "大区处理率最高," + minarea + "大区处理率最低。"); cell2.CellStyle = cellStylebt2; sheet.AddMergedRegion(new CellRangeAddress(1, 5, 0, 11)); #endregion #region ICellStyle cellStylebt3 = workbook.CreateCellStyle(); NPOI.SS.UserModel.IFont cellfontbt3 = workbook.CreateFont(); cellfontbt3.Boldweight = (short)FontBoldWeight.Bold; cellfontbt3.FontHeight = 200; cellStylebt3.WrapText = true;//设置换行这个要先设置 cellStylebt3.SetFont(cellfontbt3); cellStylebt3.VerticalAlignment = VerticalAlignment.Center; cellStylebt3.Alignment = HorizontalAlignment.Center; IRow irow3 = sheet.CreateRow(6); IRow irow6 = sheet.CreateRow(7); ICell title1 = irow3.CreateCell(0); title1.SetCellValue("序号"); title1.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 7, 0, 0)); ICell title12 = irow3.CreateCell(1); title12.SetCellValue("大区"); title12.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 7, 1, 1)); ICell title13 = irow3.CreateCell(2); title13.SetCellValue("工单总数\n(条)"); title13.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 7, 2, 2)); ICell title14= irow3.CreateCell(3); title14.SetCellValue("办事处经理当日分派情况"); title14.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 6, 3, 4)); ICell title15 = irow6.CreateCell(3); title15.SetCellValue("起数(条)"); title15.CellStyle = cellStylebt3; ICell title16 = irow6.CreateCell(4); title16.SetCellValue("分派率"); title16.CellStyle = cellStylebt3; ICell title17= irow3.CreateCell(5); title17.SetCellValue("业务员当日接单情况"); title17.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 6, 5, 6)); ICell title18 = irow6.CreateCell(5); title18.SetCellValue("起数(条)"); title18.CellStyle = cellStylebt3; ICell title19 = irow6.CreateCell(6); title19.SetCellValue("接单率"); title19.CellStyle = cellStylebt3; ICell title110 = irow3.CreateCell(7); title110.SetCellValue("处理中工单(条)"); title110.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 7, 7, 7)); ICell title111 = irow3.CreateCell(8); title111.SetCellValue("已完结工单起数(条)"); title111.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 7, 8, 8)); ICell title112 = irow3.CreateCell(9); title112.SetCellValue("完结率"); title112.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 7, 9, 9)); ICell title113 = irow3.CreateCell(10); title113.SetCellValue("公关经理催单率"); title113.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 7, 10, 10)); ICell title114 = irow3.CreateCell(11); title114.SetCellValue("公关经理"); title114.CellStyle = cellStylebt3; sheet.AddMergedRegion(new CellRangeAddress(6, 7, 11, 11)); #endregion for (int i = 0; i < complaints.Count ; i++) { IRow irow4 = sheet.CreateRow(8 + i); for (int j = 0; j < 13; j++) { switch (j) { case 0: ICell cell3 = irow4.CreateCell(j); cell3.SetCellValue(complaints[i].serialnumbe); cell3.CellStyle = cellStylebt; break; case 1: ICell cell4 = irow4.CreateCell(j); cell4.SetCellValue(complaints[i].area); cell4.CellStyle = cellStylebt; break; case 2: ICell cel5 = irow4.CreateCell(j); cel5.SetCellValue(complaints[i].total); cel5.CellStyle = cellStylebt; break; case 3: ICell cel6 = irow4.CreateCell(j); cel6.SetCellValue(complaints[i].assignmentnumber); cel6.CellStyle = cellStylebt; break; case 4: ICell cel7 = irow4.CreateCell(j); cel7.SetCellValue(complaints[i].assignmentrate); cel7.CellStyle = cellStylebt; break; case 5: ICell cel8 = irow4.CreateCell(j); cel8.SetCellValue(complaints[i].receiving); cel8.CellStyle = cellStylebt; break; case 6: ICell cel9 = irow4.CreateCell(j); cel9.SetCellValue(complaints[i].receivingrate); cel9.CellStyle = cellStylebt; break; case 7: ICell cell0 = irow4.CreateCell(j); cell0.SetCellValue(complaints[i].processingnumber); cell0.CellStyle = cellStylebt; break; case 8: ICell cell11 = irow4.CreateCell(j); cell11.SetCellValue(complaints[i].processednumber); cell11.CellStyle = cellStylebt; break; case 9: ICell cell12 = irow4.CreateCell(j); cell12.SetCellValue(complaints[i].processedrate); cell12.CellStyle = cellStylebt; break; case 10: ICell cell13 = irow4.CreateCell(j); cell13.SetCellValue(complaints[i].reminderrate); cell13.CellStyle = cellStylebt; break; case 11: ICell cell14 = irow4.CreateCell(j); cell14.SetCellValue(complaints[i].name); cell14.CellStyle = cellStylebt; break; } } } //自适应列宽度 for (int i = 0; i < 10; i++) { // sheet.SetColumnWidth(i, 12 * 400); } using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); HttpContext curContext = HttpContext.Current; // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = Encoding.UTF8; curContext.Response.Charset = ""; curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("售后APP工单进度统计表" + ".xls", Encoding.UTF8)); curContext.Response.BinaryWrite(ms.GetBuffer()); workbook = null; ms.Close(); ms.Dispose(); curContext.Response.End(); } return ""; } catch { return "导出失败!"; } } } }