3优化测试通用下载excel模板接口

master
xiaochanghai 1 year ago
parent e5ced9c0ef
commit 5411524e14
  1. 646
      Model/Tiobon.Web.pdm
  2. 13
      Tiobon.Core.Api/Controllers/CommonController.cs
  3. 24
      Tiobon.Core.DataAccess/ReportHelper.cs
  4. 2
      Tiobon.Core.IServices/ICommonServices.cs
  5. 8
      Tiobon.Core.Services/CommonServices.cs

File diff suppressed because it is too large Load Diff

@ -74,4 +74,17 @@ public class CommonController : BaseApiController
return await _commonServices.ExportExcelAsync(param); return await _commonServices.ExportExcelAsync(param);
} }
#endregion #endregion
#region 下载导入模板Excel
/// <summary>
/// 下载导入模板Excel
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[HttpPost, Route("DownImportTemplate")]
public async Task<ServiceResult<QueryExportReturn>> DownImportTemplateAsync([FromBody] QueryExport param)
{
return await _commonServices.DownImportTemplateAsync(param);
}
#endregion
} }

@ -8,6 +8,7 @@ using System.Linq.Dynamic.Core;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Google.Protobuf.Collections; using Google.Protobuf.Collections;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using NPOI.HSSF.UserModel; using NPOI.HSSF.UserModel;
using NPOI.OpenXmlFormats.Spreadsheet; using NPOI.OpenXmlFormats.Spreadsheet;
using NPOI.SS.UserModel; using NPOI.SS.UserModel;
@ -108,12 +109,19 @@ public static class ReportHelper
#endregion #endregion
public static async Task<long> ExportExcel(ISqlSugarClient Db, List<QueryExportColumn> tableColumn, DataTable dt) public static async Task<long> ImportTemplate(ISqlSugarClient Db, List<QueryExportColumn> tableColumn, DataTable dt, string menuName)
{ {
string filepath = "";
//生成表格 //生成表格
try try
{ {
//生成文件至文件服务器
var fid = SnowFlakeSingle.Instance.NextId();
var filepath = $"{$"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}import{Path.DirectorySeparatorChar}{fid}{Path.DirectorySeparatorChar}"}";
if (!Directory.Exists(filepath))
Directory.CreateDirectory(filepath);
var fname = $"{menuName}.xlsx";
IWorkbook fileWorkbook; IWorkbook fileWorkbook;
bool IsHSSF = true; bool IsHSSF = true;
if (Path.GetExtension(filepath) == ".xls") if (Path.GetExtension(filepath) == ".xls")
@ -163,7 +171,7 @@ public static class ReportHelper
ICell cell = erow_1.CreateCell(SortNum); ICell cell = erow_1.CreateCell(SortNum);
ICell cel2 = erow_2.CreateCell(SortNum); ICell cel2 = erow_2.CreateCell(SortNum);
string field = drow.field; string field = drow.field;
; ;
string label = drow.label; string label = drow.label;
// 批注 // 批注
string commentText = string.Empty; string commentText = string.Empty;
@ -277,10 +285,12 @@ public static class ReportHelper
for (int i = 0; i < dt.Rows.Count; i++) for (int i = 0; i < dt.Rows.Count; i++)
{ {
IRow row1 = sheet.CreateRow(i + 2); IRow row1 = sheet.CreateRow(i + 2);
for (int j = 0; j < dt.Columns.Count; j++) ICell cell = row1.CreateCell(0);
cell.SetCellValue(i + 1);
for (int j = 1; j <= tableColumn.Count; j++)
{ {
ICell cell = row1.CreateCell(j); cell = row1.CreateCell(j);
cell.SetCellValue(dt.Rows[i][j].ToString()); cell.SetCellValue(dt.Rows[i][tableColumn[j - 1].field].ToString());
} }
} }
@ -344,7 +354,7 @@ public static class ReportHelper
var buf = stream.ToArray(); var buf = stream.ToArray();
//保存为Excel文件 //保存为Excel文件
using (FileStream fs = new FileStream(filepath, FileMode.Create, FileAccess.Write)) using (FileStream fs = new FileStream(filepath + fname, FileMode.Create, FileAccess.Write))
{ {
fs.Write(buf, 0, buf.Length); fs.Write(buf, 0, buf.Length);
fs.Flush(); fs.Flush();

@ -24,4 +24,6 @@ public interface ICommonServices : IBaseServices<RootEntityTkey<int>>
Task<ServiceResult<CommonSelect>> GetSelectAsync(string type); Task<ServiceResult<CommonSelect>> GetSelectAsync(string type);
Task<ServiceResult<QueryExportReturn>> ExportExcelAsync(QueryExport param); Task<ServiceResult<QueryExportReturn>> ExportExcelAsync(QueryExport param);
Task<ServiceResult<QueryExportReturn>> DownImportTemplateAsync(QueryExport param);
} }

@ -1227,17 +1227,19 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
/// </summary> /// </summary>
/// <param name="param"></param> /// <param name="param"></param>
/// <returns></returns> /// <returns></returns>
public async Task<ServiceResult<QueryExportReturn>> ImportTemplateAsync(QueryExport param) public async Task<ServiceResult<QueryExportReturn>> DownImportTemplateAsync(QueryExport param)
{ {
var result = new QueryExportReturn(); var result = new QueryExportReturn();
var tableNmae = string.Empty; var tableNmae = string.Empty;
string sql = "select QueryProcedure, EditProcedure, IUDProcedure from Ghrs_Menu where MenuNo='{0}'"; var menuName = string.Empty;
string sql = "select QueryProcedure, EditProcedure, IUDProcedure, MenuName from Ghrs_Menu where MenuNo='{0}'";
sql = string.Format(sql, param.menuName); sql = string.Format(sql, param.menuName);
var dt = await Db.Ado.GetDataTableAsync(sql); var dt = await Db.Ado.GetDataTableAsync(sql);
if (dt.Rows.Count > 0) if (dt.Rows.Count > 0)
{ {
string queryProcedure = dt.Rows[0]["QueryProcedure"].ToString(); string queryProcedure = dt.Rows[0]["QueryProcedure"].ToString();
menuName = dt.Rows[0]["MenuName"].ToString();
string[] aaa = queryProcedure.Split('/'); string[] aaa = queryProcedure.Split('/');
tableNmae = aaa[1]; tableNmae = aaa[1];
@ -1273,7 +1275,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
columns = columns.WhereIF(param.exportSet.ExFields.Any(), x => param.exportSet.ExFields.Contains(x.field)).ToList(); columns = columns.WhereIF(param.exportSet.ExFields.Any(), x => param.exportSet.ExFields.Contains(x.field)).ToList();
dt = await Db.Ado.GetDataTableAsync("SELECT * FROM " + tableNmae + " WHERE IsEnable=1"); dt = await Db.Ado.GetDataTableAsync("SELECT * FROM " + tableNmae + " WHERE IsEnable=1");
ReportHelper.ExportExcel(Db, columns, dt); await ReportHelper.ImportTemplate(Db, columns, dt, menuName);
return new ServiceResult<QueryExportReturn>() { Success = true, Message = "查询成功", Data = result, }; return new ServiceResult<QueryExportReturn>() { Success = true, Message = "查询成功", Data = result, };

Loading…
Cancel
Save