using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Web.Http; using Warehouse.DAL.Report; using Warehouse.WebApi.Model; namespace Warehouse.WebApi { public class MaterialBatchNumberNewController : BaseController { MaterialBatchNumberDal DT = new MaterialBatchNumberDal(); [Route("api/MaterialBatchNumberNew/MaterialBatchNumberNew")] [HttpPost] public IHttpActionResult Repair(MaterialBatchNumberModel model) { try { var res = DT.MaterialBatchNumber(model.WorkOrder); var list = new List(); res.ForEach(x => { list.Add(new { part_type_desc = x.part_type_desc.ToString() ?? "-", orig_batch_nbr = x.orig_batch_nbr.ToString() ?? "-", lot_nbr = x.lot_nbr.ToString() ?? "-", lot_qty_remaining = x.lot_qty_remaining?? "-", lot_qty = x.lot_qty?? "-", residue = x.residue?? "-", uom = x.uom.ToString() ?? "-", supplier_code = x.supplier_code.ToString() ?? "-", attr_value = x.attr_value.ToString() ?? "-", }); }); return Success(new { data = list }); } catch (Exception e) { } return Failure("查询异常"); } #region 下载 [Route("api/MaterialBatchNumberNew/MaterialBatchNumberNewReportGet")] [HttpPost] public HttpResponseMessage DownloadBatchReportGet(DayPackCompleteModel model) { try { HSSFWorkbook hssfworkbook = new HSSFWorkbook(); hssfworkbook.CreateSheet("材料批号查询报表"); ICellStyle style = hssfworkbook.CreateCellStyle(); //设置单元格的样式:水平对齐居中 style.Alignment = HorizontalAlignment.Center; ISheet sheet = null; sheet = hssfworkbook.GetSheetAt(0); IRow row = null; #region 添加表头 var thList = new List { "材料名称 ", "母批次", "子批次", "子批次剩余数量", "子批原数量", "母批剩余数量", "单位", "厂商", "规格" }; //设置第一列列宽 // sheet.SetColumnWidth(0, 20 * 256); //设置第一列之后的列宽 for (int i = 1; i < thList.Count; i++) { sheet.SetColumnWidth(i, 10 * 500); } var rowCount = sheet.LastRowNum; row = sheet.CreateRow(rowCount); //添加表头并设置样式字体居中 for (int i = 0; i < thList.Count; i++) { row.CreateCell(i).SetCellValue(thList[i]); row.GetCell(i).CellStyle = style; } #endregion //获取数据 var res = DT.MaterialBatchNumber(model.WorkOrder); foreach (var item in res.ToList()) { var rowCount1 = sheet.LastRowNum + 1; row = sheet.CreateRow(rowCount1); row.CreateCell(0).SetCellValue(item.part_type_desc.ToString()); row.GetCell(0).CellStyle = style; row.CreateCell(1).SetCellValue(item.orig_batch_nbr.ToString()); row.GetCell(1).CellStyle = style; row.CreateCell(2).SetCellValue(item.lot_nbr.ToString()); row.GetCell(2).CellStyle = style; row.CreateCell(3).SetCellValue(item.lot_qty_remaining.ToString()); row.GetCell(3).CellStyle = style; row.CreateCell(4).SetCellValue(item.lot_qty.ToString()); row.GetCell(4).CellStyle = style; row.CreateCell(5).SetCellValue(item.residue.ToString()); row.GetCell(5).CellStyle = style; row.CreateCell(6).SetCellValue(item.uom.ToString()); row.GetCell(6).CellStyle = style; row.CreateCell(7).SetCellValue(item.supplier_code.ToString()); row.GetCell(7).CellStyle = style; row.CreateCell(8).SetCellValue(item.attr_value.ToString()); row.GetCell(8).CellStyle = style; } MemoryStream ms = new MemoryStream(); //创建内存流用于写入文件 hssfworkbook.Write(ms);//将Excel写入流 ms.Flush(); ms.Position = 0; HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StreamContent(ms); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "材料批号查询报表.xls" }; return result; } catch (Exception) { } return new HttpResponseMessage(HttpStatusCode.NoContent); } #endregion } }