From 65b1104ed7ea42f91817b7373b98828bbf0293a9 Mon Sep 17 00:00:00 2001 From: gaofei1985 <181547018@qq.com> Date: Tue, 11 Jun 2024 09:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SGGL/BLL/Common/Const.cs | 8 + .../File/Excel/DataOut/出差记录.xlsx | Bin 0 -> 9684 bytes .../File/Excel/DataOut/员工开车绩效记录.xlsx | Bin 0 -> 9771 bytes SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user | 2 +- SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx | 4 +- .../Personal/BusinessTrip.aspx.cs | 140 +++++++++++++++++- .../Personal/TestRunPerformance.aspx | 5 +- .../Personal/TestRunPerformance.aspx.cs | 139 +++++++++++++++++ .../TestRunPerformance.aspx.designer.cs | 9 ++ SGGL/FineUIPro.Web/Web.config | 2 +- SGGL/WebAPI/WebAPI.csproj.user | 2 +- 11 files changed, 304 insertions(+), 7 deletions(-) create mode 100644 SGGL/FineUIPro.Web/File/Excel/DataOut/出差记录.xlsx create mode 100644 SGGL/FineUIPro.Web/File/Excel/DataOut/员工开车绩效记录.xlsx diff --git a/SGGL/BLL/Common/Const.cs b/SGGL/BLL/Common/Const.cs index b3970b27..436b29a7 100644 --- a/SGGL/BLL/Common/Const.cs +++ b/SGGL/BLL/Common/Const.cs @@ -4700,6 +4700,14 @@ namespace BLL /// 质量共检通知单的虚拟路径 /// public const string SpotCheckTemplateUrl = "File\\Word\\CQMS\\Check\\质量共检通知单.doc"; + /// + /// 出差记录模板文件原始虚拟路径 + /// + public const string BusinessTripTemplateUrl = "File\\Excel\\DataOut\\出差记录.xlsx"; + /// + /// 员工开车绩效记录模板文件原始虚拟路径 + /// + public const string TestRunPerformanceTemplateUrl = "File\\Excel\\DataOut\\员工开车绩效记录.xlsx"; #endregion #endregion diff --git a/SGGL/FineUIPro.Web/File/Excel/DataOut/出差记录.xlsx b/SGGL/FineUIPro.Web/File/Excel/DataOut/出差记录.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ec2a2db20c501f0f8a27ee4a670f19c55e89945a GIT binary patch literal 9684 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 literal 0 HcmV?d00001 diff --git a/SGGL/FineUIPro.Web/File/Excel/DataOut/员工开车绩效记录.xlsx b/SGGL/FineUIPro.Web/File/Excel/DataOut/员工开车绩效记录.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..458117f0ec75d95eacdd821745381a67a02bedcc GIT binary patch literal 9771 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 CyWK7T literal 0 HcmV?d00001 diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user index 63722353..cb873201 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj.user @@ -1,7 +1,7 @@  - Debug|Any CPU + Release|Any CPU true false diff --git a/SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx b/SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx index dee0c859..cb644244 100644 --- a/SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx +++ b/SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx @@ -15,7 +15,7 @@ @@ -32,7 +32,7 @@ - diff --git a/SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx.cs b/SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx.cs index 3fd2dd6d..20a39083 100644 --- a/SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx.cs +++ b/SGGL/FineUIPro.Web/Personal/BusinessTrip.aspx.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; +using System.IO; using System.Linq; namespace FineUIPro.Web.Personal @@ -243,7 +244,144 @@ namespace FineUIPro.Web.Personal /// protected void btnOut_Click(object sender, EventArgs e) { - + string ids = string.Empty; + if (Grid1.SelectedRowIndexArray.Length > 0) + { + foreach (int rowIndex in Grid1.SelectedRowIndexArray) + { + string rowID = Grid1.DataKeys[rowIndex][0].ToString(); + ids += rowID + ","; + } + } + else + { + ShowNotify("请至少选中一行!", MessageBoxIcon.Warning); + return; + } + string rootPath = Server.MapPath("~/"); + string initTemplatePath = string.Empty; + string uploadfilepath = string.Empty; + string newUrl = string.Empty; + string filePath = string.Empty; + initTemplatePath = Const.BusinessTripTemplateUrl; + uploadfilepath = rootPath + initTemplatePath; + newUrl = uploadfilepath.Replace(".xlsx", "(" + string.Format("{0:yyyy-MM-dd}", DateTime.Now) + ").xlsx"); + File.Copy(uploadfilepath, newUrl); + // 第一步:读取文件流 + NPOI.SS.UserModel.IWorkbook workbook; + using (FileStream stream = new FileStream(newUrl, FileMode.Open, FileAccess.Read)) + { + workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(stream); + } + Model.SGGLDB db = Funs.DB; + string[] strs = ids.Split(','); + var projects = from x in db.Base_Project select x; + var lists = from x in db.Person_BusinessTrip where strs.Contains(x.BusinessTripId) orderby x.ArriveDate descending select x; + // 创建单元格样式 + NPOI.SS.UserModel.ICellStyle cellStyle = workbook.CreateCellStyle(); + cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; + var font = workbook.CreateFont(); + font.FontHeightInPoints = 10; + //font.FontHeightInPoints = (short)8.5;字号为小数时要转为short + cellStyle.SetFont(font); + // 第二步:创建新数据行 + NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); + int i = 1; + int sum = 0; + foreach (var item in lists) + { + // 第二步:创建新数据行 + NPOI.SS.UserModel.IRow row = sheet.GetRow(i); + NPOI.SS.UserModel.ICell cell; + // 添加数据 + cell = row.CreateCell(0); + cell.CellStyle = cellStyle; + cell.SetCellValue(i.ToString()); + cell = row.CreateCell(1); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.Type == "1" ? "项目出差" : "其他出差"); + cell = row.CreateCell(2); + cell.CellStyle = cellStyle; + cell.SetCellValue(BLL.UserService.GetUserNameByUserId(item.UserId)); + cell = row.CreateCell(3); + cell.CellStyle = cellStyle; + var project = projects.FirstOrDefault(x => x.ProjectId == item.ProjectId); + if (project != null) + { + cell.SetCellValue(project.ProjectName); + } + cell = row.CreateCell(4); + cell.CellStyle = cellStyle; + string arriveDate = string.Empty; + if (item.ArriveDate != null) + { + arriveDate = string.Format("{0:yyyy-MM-dd}", item.ArriveDate); + } + cell.SetCellValue(arriveDate); + string leaveDate = string.Empty; + if (item.LeaveDate != null) + { + leaveDate = string.Format("{0:yyyy-MM-dd}", item.LeaveDate); + } + cell = row.CreateCell(5); + cell.CellStyle = cellStyle; + cell.SetCellValue(leaveDate); + string days = ""; + if (item.ArriveDate != null && item.LeaveDate != null) + { + days = ((item.LeaveDate.Value - item.ArriveDate.Value).Days + 1).ToString(); + sum += (item.LeaveDate.Value - item.ArriveDate.Value).Days + 1; + } + cell = row.CreateCell(6); + cell.CellStyle = cellStyle; + cell.SetCellValue(days); + i++; + } + NPOI.SS.UserModel.IRow rows = sheet.GetRow(i); + NPOI.SS.UserModel.ICell cells; + cells = rows.CreateCell(0); + cells.CellStyle = cellStyle; + cells.SetCellValue(string.Empty); + cells = rows.CreateCell(1); + cells.CellStyle = cellStyle; + cells.SetCellValue(string.Empty); + cells = rows.CreateCell(2); + cells.CellStyle = cellStyle; + cells.SetCellValue(string.Empty); + cells = rows.CreateCell(3); + cells.CellStyle = cellStyle; + cells.SetCellValue(string.Empty); + cells = rows.CreateCell(4); + cells.CellStyle = cellStyle; + cells.SetCellValue(string.Empty); + cells = rows.CreateCell(5); + cells.CellStyle = cellStyle; + cells.SetCellValue("合计:"); + cells = rows.CreateCell(6); + cells.CellStyle = cellStyle; + cells.SetCellValue(sum.ToString()); + // 第三步:写入文件流 + using (FileStream stream = new FileStream(newUrl, FileMode.Create, FileAccess.Write)) + { + workbook.Write(stream); + workbook.Close(); + } + string fileName = Path.GetFileName(newUrl); + FileInfo info = new FileInfo(newUrl); + long fileSize = info.Length; + Response.Clear(); + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", fileSize.ToString()); + Response.TransmitFile(newUrl, 0, fileSize); + Response.Flush(); + Response.Close(); + File.Delete(newUrl); } #endregion } diff --git a/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx b/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx index 26a36620..5923db8b 100644 --- a/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx +++ b/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx @@ -15,7 +15,7 @@ @@ -27,6 +27,9 @@ + + diff --git a/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx.cs b/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx.cs index 2c7c370e..ae1e2e71 100644 --- a/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx.cs +++ b/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; +using System.IO; using System.Linq; namespace FineUIPro.Web.Personal @@ -201,5 +202,143 @@ namespace FineUIPro.Web.Personal { BindGrid(); } + + #region 导出按钮 + /// 导出按钮 + /// + /// + /// + protected void btnOut_Click(object sender, EventArgs e) + { + string ids = string.Empty; + if (Grid1.SelectedRowIndexArray.Length > 0) + { + foreach (int rowIndex in Grid1.SelectedRowIndexArray) + { + string rowID = Grid1.DataKeys[rowIndex][0].ToString(); + ids += rowID + ","; + } + } + else + { + ShowNotify("请至少选中一行!", MessageBoxIcon.Warning); + return; + } + string rootPath = Server.MapPath("~/"); + string initTemplatePath = string.Empty; + string uploadfilepath = string.Empty; + string newUrl = string.Empty; + string filePath = string.Empty; + initTemplatePath = Const.TestRunPerformanceTemplateUrl; + uploadfilepath = rootPath + initTemplatePath; + newUrl = uploadfilepath.Replace(".xlsx", "(" + string.Format("{0:yyyy-MM-dd}", DateTime.Now) + ").xlsx"); + File.Copy(uploadfilepath, newUrl); + // 第一步:读取文件流 + NPOI.SS.UserModel.IWorkbook workbook; + using (FileStream stream = new FileStream(newUrl, FileMode.Open, FileAccess.Read)) + { + workbook = new NPOI.XSSF.UserModel.XSSFWorkbook(stream); + } + Model.SGGLDB db = Funs.DB; + string[] strs = ids.Split(','); + var projects = from x in db.Base_Project select x; + var testRunPerformanceStandards = from x in db.Base_TestRunPerformanceStandard select x; + var lists = from x in db.Person_TestRunPerformance where strs.Contains(x.TestRunPerformanceId) orderby x.Months descending select x; + // 创建单元格样式 + NPOI.SS.UserModel.ICellStyle cellStyle = workbook.CreateCellStyle(); + cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; + var font = workbook.CreateFont(); + font.FontHeightInPoints = 10; + //font.FontHeightInPoints = (short)8.5;字号为小数时要转为short + cellStyle.SetFont(font); + // 第二步:创建新数据行 + NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); + int i = 1; + int sum = 0; + foreach (var item in lists) + { + // 第二步:创建新数据行 + NPOI.SS.UserModel.IRow row = sheet.GetRow(i); + NPOI.SS.UserModel.ICell cell; + // 添加数据 + cell = row.CreateCell(0); + cell.CellStyle = cellStyle; + cell.SetCellValue(i.ToString()); + cell = row.CreateCell(1); + cell.CellStyle = cellStyle; + cell.SetCellValue(BLL.UserService.GetUserNameByUserId(item.UserId)); + cell = row.CreateCell(2); + cell.CellStyle = cellStyle; + string months = string.Empty; + if (item.Months != null) + { + months = string.Format("{0:yyyy-MM}", item.Months); + } + cell.SetCellValue(months); + cell = row.CreateCell(3); + cell.CellStyle = cellStyle; + var project = projects.FirstOrDefault(x => x.ProjectId == item.ProjectId); + if (project != null) + { + cell.SetCellValue(project.ProjectName); + } + else + { + cell.SetCellValue("本部"); + } + cell = row.CreateCell(4); + cell.CellStyle = cellStyle; + cell.SetCellValue(item.JobContent); + var testRunPerformanceStandard = testRunPerformanceStandards.FirstOrDefault(x => x.TestRunPerformanceStandardId == item.TestRunPerformanceStandardId); + cell = row.CreateCell(5); + cell.CellStyle = cellStyle; + if (testRunPerformanceStandard != null) + { + cell.SetCellValue(testRunPerformanceStandard.Type); + } + cell = row.CreateCell(6); + cell.CellStyle = cellStyle; + if (testRunPerformanceStandard != null) + { + cell.SetCellValue(testRunPerformanceStandard.Item); + } + cell = row.CreateCell(7); + cell.CellStyle = cellStyle; + if (testRunPerformanceStandard != null) + { + cell.SetCellValue(testRunPerformanceStandard.Unit); + } + cell = row.CreateCell(8); + cell.CellStyle = cellStyle; + if (item.Days != null) + { + cell.SetCellValue(item.Days.ToString()); + } + i++; + } + // 第三步:写入文件流 + using (FileStream stream = new FileStream(newUrl, FileMode.Create, FileAccess.Write)) + { + workbook.Write(stream); + workbook.Close(); + } + string fileName = Path.GetFileName(newUrl); + FileInfo info = new FileInfo(newUrl); + long fileSize = info.Length; + Response.Clear(); + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", fileSize.ToString()); + Response.TransmitFile(newUrl, 0, fileSize); + Response.Flush(); + Response.Close(); + File.Delete(newUrl); + } + #endregion } } \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx.designer.cs b/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx.designer.cs index d8cb0af2..7df8574c 100644 --- a/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/Personal/TestRunPerformance.aspx.designer.cs @@ -84,6 +84,15 @@ namespace FineUIPro.Web.Personal { /// protected global::FineUIPro.Button btnNew; + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + /// /// ToolbarSeparator1 控件。 /// diff --git a/SGGL/FineUIPro.Web/Web.config b/SGGL/FineUIPro.Web/Web.config index d748de30..a470cd33 100644 --- a/SGGL/FineUIPro.Web/Web.config +++ b/SGGL/FineUIPro.Web/Web.config @@ -12,7 +12,7 @@ - + diff --git a/SGGL/WebAPI/WebAPI.csproj.user b/SGGL/WebAPI/WebAPI.csproj.user index 5fe155da..bd497c6b 100644 --- a/SGGL/WebAPI/WebAPI.csproj.user +++ b/SGGL/WebAPI/WebAPI.csproj.user @@ -1,7 +1,7 @@  - Debug|Any CPU + Release|Any CPU true