/// <summary>
/// 导出Execl文件
/// </summary>
/// <returns></returns>
public ActionResult WholeExportList(int Year, List<string> AnalyseDataField, string SchoolType, string SchoolName)
{
///自定义返回类
RongboRequest<AnalyseDataQuery> query = new RongboRequest<AnalyseDataQuery>();
if (query.Data == null)
{
query.Data = new AnalyseDataQuery();
}
//获取基础参数
//query.Data.AnalyseDataField = AnalyseDataField;
query.Data.SchoolType = SchoolType;
query.Data.SchoolName = SchoolName;
query.Data.DistrictCode = this.DistrictCode;
query.Data.Year = Year;
//创建导出对象
NPOI.HSSF.UserModel.HSSFWorkbook execl = new NPOI.HSSF.UserModel.HSSFWorkbook();
//添加一个sheet
NPOI.SS.UserModel.ISheet sheet = execl.CreateSheet("Sheet1");
//添加标题行
NPOI.SS.UserModel.IRow head = sheet.CreateRow(0);
//将标题写入execl
head.CreateCell(0).SetCellValue("学校ID");
head.CreateCell(1).SetCellValue("学校名称");
int i = 1;
var DataField = JsonConvert.SerializeObject(AnalyseDataField).Replace("]", "").Replace("[", "").Replace('"', ' ').Replace(" ", "").Split(",");
List<string> ListData = new List<string>();
foreach (var item in DataField)
{
i++;
query.Data.AnalyseDataField = int.Parse(item);
var analyseMB = _MB_ANALYSE_Bll.GetSingle(query.Data.AnalyseDataField).Data;
ListData.Add(analyseMB.FieldName);
if (analyseMB != null && !string.IsNullOrWhiteSpace(analyseMB.TableName)
&& !string.IsNullOrWhiteSpace(analyseMB.FieldName)
)
{
//循环写入前端传入的标题
head.CreateCell(i).SetCellValue(analyseMB.FieldDescription);
//获取导出数据
}
else
{
}
}
query.Data.ListData = ListData;
///DataTable 数据,我这里列不是固定列,所以要加控制
DataTable page = _analyseDataBll.WholeExport(query);
///index 行索引,因为列头占用一行,所以从1开始
/// create 导出的动态列不固定,所以加限制。
/// ListData 前端传入的需要导出的列个数,因为前两列已经是固定的东西,所以create固定=2,循环完后重置
int index = 1,create=2;
foreach (DataRow item in page.Rows)
{
NPOI.SS.UserModel.IRow row = sheet.CreateRow(index);
row.CreateCell(0).SetCellValue(item["XX_ID"].ToString());
row.CreateCell(1).SetCellValue(item["XXMC"].ToString());
foreach (var im in ListData)
{
row.CreateCell(create).SetCellValue(item[$"{im}"].ToString());
create++;
}
create = 2;
index++;
}
// 写入到客户端
System.IO.MemoryStream stream = new System.IO.MemoryStream();
execl.Write(stream);
stream.Seek(0, SeekOrigin.Begin);
string fileName = DateTime.Now.ToString("yyyy-MM-dd") + "数据采集导出信息.xls";
return File(stream, "application/vnd.ms-excel", fileName);
//return Json("");
}