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 "导出失败!";
}
}
}
}