public ActionResult Export(string deptCode,string workCoe ,string key)
{
string fileName = "评分标准设置";
DataTable dt = new DataTable();
var query = _db.QueryOver<ScoreStandard>();
if (!string.IsNullOrEmpty(key))
{
query = query.Where(x => x.ItemContent.IsLike(key, MatchMode.Anywhere) || x.ItemCode.IsLike(key, MatchMode.Anywhere));
}
if (!string.IsNullOrEmpty(deptCode))
{
query = query.Where(x => x.DeptCode == deptCode);
}
if (!string.IsNullOrEmpty(workCoe))
{
query = query.Where(x => x.WorkTypeId == Convert.ToInt32(workCoe));
}
var rowData = query.OrderBy(x => x.Enabled).Desc.OrderBy(x => x.id).Asc.List().Select(x => new {
ItemCode = x.ItemCode.Trim(),
ItemContent = x.ItemContent.Trim(),
x.Score,
x.WorkType,
x.DeptName,
x.Enabled
}).ToList();
dt.Columns.Add("部门");
dt.Columns.Add("工种");
dt.Columns.Add("编码");
dt.Columns.Add("内容");
if (rowData.Count > 0)
{
for (int i = 0; i < rowData.Count; i++)
{
DataRow dr = dt.NewRow();
dr[0] = rowData[i].DeptName;
dr[1] = rowData[i].WorkType;
dr[2] = rowData[i].ItemCode;
dr[3] = rowData[i].ItemContent;
dt.Rows.Add(dr);
}
}
MemoryStream stream = (MemoryStream)RenderDataTableToExcelByFrozen(dt);
return File(stream, "application/octet-stream", Server.UrlPathEncode(string.Format("{0}.xls", fileName)));
}
public static Stream RenderDataTableToExcelByFrozen(DataTable SourceTable, int FrozenRow = 0, int FrozenColumn = 0)
{
HSSFWorkbook workbook = new HSSFWorkbook();
MemoryStream ms = new MemoryStream();
HSSFSheet sheet = workbook.CreateSheet() as HSSFSheet;
HSSFRow headerRow = sheet.CreateRow(0) as HSSFRow;
ICellStyle style11 = workbook.CreateCellStyle();
HSSFFont rowFont1 = workbook.CreateFont() as HSSFFont;
rowFont1.FontHeightInPoints = 12;
style11.SetFont(rowFont1);
//保留两位小数
style11.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
ICellStyle style12 = workbook.CreateCellStyle();
HSSFFont rowFont2 = workbook.CreateFont() as HSSFFont;
rowFont2.FontHeightInPoints = 12;
style12.SetFont(rowFont2);
//保留四位小数
IDataFormat dataformat = workbook.CreateDataFormat();
style12.DataFormat = dataformat.GetFormat("0.0000");
sheet.CreateFreezePane(FrozenColumn, FrozenRow);
ICellStyle headStyle = workbook.CreateCellStyle();
headStyle.Alignment = HorizontalAlignment.CENTER;
HSSFFont font = workbook.CreateFont() as HSSFFont;
font.FontHeightInPoints = 14;
font.Boldweight = 700;
headStyle.SetFont(font);
// handling header.
foreach (DataColumn column in SourceTable.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
sheet.SetColumnWidth(column.Ordinal, 7000);
headerRow.GetCell(column.Ordinal).CellStyle = headStyle;
}
// handling value.
int rowIndex = 1;
ICellStyle rowStyle = workbook.CreateCellStyle();
HSSFFont rowFont = workbook.CreateFont() as HSSFFont;
rowFont.FontHeightInPoints = 14;
rowStyle.SetFont(rowFont);
foreach (DataRow row in SourceTable.Rows)
{
HSSFRow dataRow = sheet.CreateRow(rowIndex) as HSSFRow;
foreach (DataColumn column in SourceTable.Columns)
{
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
dataRow.GetCell(column.Ordinal).CellStyle = rowStyle;
}
rowIndex++;
}
workbook.Write(ms);
ms.Flush();
ms.Position = 0;
sheet = null;
headerRow = null;
workbook = null;
return ms;
}