using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Web.Http; using WebAPI.Models; namespace WebAPI.Controllers { public class Sc_PackUnionBillController : ApiController { public DBUtility.ClsPub.Enum_BillStatus BillStatus;//单据状态(新增,修改,浏览,更新单价,变更) private json objJsonResult = new json(); public DataSet ds = new DataSet(); public SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); #region 标准工时单列表 [Route("Sc_PackUnionBill/GetSc_StationInBillList")] [HttpGet] public object GetSc_StationInBillList(string sWhere) { try { ds = oCn.RunProcReturn("select * from h_v_Sc_StationInBillListMain" + sWhere + "order by hmainid desc", "h_v_Sc_StationInBillListMain"); objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "返回记录成功!"; objJsonResult.data = ds.Tables[0]; return objJsonResult; } catch (Exception ex) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "没有返回任何记录!" + ex.ToString(); objJsonResult.data = null; return objJsonResult; } } #endregion #region 标准工时导出Excel表格数据 [Route("Sc_PackUnionBill/Sc_StationInBillSetExcel")] [HttpGet] public HttpResponseMessage Sc_StationInBillSetExcel(string sWhere) { HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("sheet1"); IRow row = sheet.CreateRow(0); row.CreateCell(0).SetCellValue("进站生产订单号"); row.CreateCell(1).SetCellValue("流转卡号"); row.CreateCell(2).SetCellValue("进出站所用时间"); row.CreateCell(3).SetCellValue("系统工时"); row.CreateCell(4).SetCellValue("工时"); row.CreateCell(5).SetCellValue("工序名"); row.CreateCell(6).SetCellValue("不良数量"); row.CreateCell(7).SetCellValue("报废数量"); row.CreateCell(8).SetCellValue("进站数量"); row.CreateCell(9).SetCellValue("出站数量"); row.CreateCell(10).SetCellValue("出站时间"); row.CreateCell(11).SetCellValue("进站时间"); row.CreateCell(12).SetCellValue("制单人"); row.CreateCell(13).SetCellValue("制单日期"); //精确控制列宽 sheet.SetColumnWidth(1, 5000); sheet.SetColumnWidth(2, 5000); sheet.SetColumnWidth(3, 5000); sheet.SetColumnWidth(4, 5000); sheet.SetColumnWidth(5, 5000); sheet.SetColumnWidth(6, 5000); sheet.SetColumnWidth(7, 5000); sheet.SetColumnWidth(8, 5000); sheet.SetColumnWidth(9, 5000); sheet.SetColumnWidth(10, 5000); sheet.SetColumnWidth(11, 5000); sheet.SetColumnWidth(12, 5000); sheet.SetColumnWidth(13, 5000); sheet.SetColumnWidth(14, 5000); LogService.Write("swhere:" + sWhere); string sql = "select * from h_v_Sc_StationInBillListMain" + sWhere + " order by hmainid desc"; DataSet ds = oCn.RunProcReturn(sql, "h_v_Sc_StationInBillListMain"); LogService.Write("sql语句:" + sql); for (var i = 0; i < ds.Tables[0].Rows.Count; i++) { IRow row1 = sheet.CreateRow(i + 1); row1.CreateCell(0).SetCellValue(ds.Tables[0].Rows[i]["进站生产订单号"].ToString()); row1.CreateCell(1).SetCellValue(ds.Tables[0].Rows[i]["流转卡号"].ToString()); row1.CreateCell(2).SetCellValue(ds.Tables[0].Rows[i]["进出站所用时间"].ToString()); row1.CreateCell(3).SetCellValue(ds.Tables[0].Rows[i]["进出站所用时间(小时)"].ToString()); row1.CreateCell(4).SetCellValue(ds.Tables[0].Rows[i]["工时"].ToString()); row1.CreateCell(5).SetCellValue(ds.Tables[0].Rows[i]["工序名"].ToString()); row1.CreateCell(6).SetCellValue(ds.Tables[0].Rows[i]["不良数量"].ToString()); row1.CreateCell(7).SetCellValue(ds.Tables[0].Rows[i]["报废数量"].ToString()); row1.CreateCell(8).SetCellValue(ds.Tables[0].Rows[i]["进站数量"].ToString()); row1.CreateCell(9).SetCellValue(ds.Tables[0].Rows[i]["出站数量"].ToString()); row1.CreateCell(10).SetCellValue(ds.Tables[0].Rows[i]["出站时间"].ToString()); row1.CreateCell(11).SetCellValue(ds.Tables[0].Rows[i]["进站时间"].ToString()); row1.CreateCell(12).SetCellValue(ds.Tables[0].Rows[i]["制单人"].ToString()); row1.CreateCell(13).SetCellValue(ds.Tables[0].Rows[i]["制单日期"].ToString()); } System.IO.MemoryStream ms = new System.IO.MemoryStream(); workbook.Write(ms); ms.Position = 0; var response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(ms); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); var fileName = "标准工时.xls"; response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = System.Web.HttpUtility.UrlEncode(fileName) }; return response; } #endregion } }