通用json打印

optimize
whm 2 years ago
parent 7112fd8caa
commit 68a5595b9f

@ -13,6 +13,8 @@ using Myshipping.Report.DB;
using Myshipping.Application.Entity;
using System.Text;
using Myshipping.Core.Entity;
using System.Management;
using Microsoft.Ajax.Utilities;
namespace Myshipping.Report.Controllers
{
@ -135,6 +137,131 @@ namespace Myshipping.Report.Controllers
return Json(resp);
}
/// <summary>
/// 打印报表文件
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult PrintReport()
{
var resp = new RespCommonData();
var printType = Request.Form["printType"];
if (printType != "pdf"
&& printType != "xlsx"
&& printType != "docx")
{
resp.Success = false;
resp.Message = $"打印类型不正确:{printType}应该为pdf、xlsx、docx中的一个";
return Json(resp);
}
var dicJson = new Dictionary<string, string>();
Request.Form.AllKeys
.Where(x => x.StartsWith("dataJson"))
.ForEach(x =>
{
dicJson.Add(x.Replace("dataJson", ""), Request.Form[x]);
});
if (Request.Files.Count > 0)
{
try
{
var savePath = ConfigurationManager.AppSettings["ReportFileSavePath"];
if (string.IsNullOrEmpty(savePath)) //未配置保存路径时,使用当前目录
{
savePath = Server.MapPath("~/ReportFiles");
}
if (!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
var fileExt = Path.GetExtension(Request.Files[0].FileName).ToLower();
if (fileExt != ".frx")
{
resp.Success = false;
resp.Message = $"文件类型不正确:{fileExt}";
return Json(resp);
}
var tmpFile = Path.Combine(savePath, $"{Guid.NewGuid()}{fileExt}");
Request.Files[0].SaveAs(tmpFile);
log.Debug($"临时保存模板文件:{tmpFile}");
//生成报表
FastReport.Report report = new FastReport.Report();
report.Load(tmpFile);
foreach (FastReport.Data.JsonConnection.JsonDataSourceConnection conn in report.Dictionary.Connections)
{
if (dicJson.ContainsKey(conn.Name))
{
conn.ConnectionString = $"Json={Convert.ToBase64String(Encoding.UTF8.GetBytes(dicJson[conn.Name]))};Encoding=utf-8";
}
}
report.Prepare();
if (printType == "pdf") //pdf
{
var fileName = $"{DateTime.Now.Ticks}.pdf";
var saveFile = Path.Combine(savePath, fileName);
PDFExport pdfExport = new PDFExport();
pdfExport.Export(report, saveFile);
resp.Success = true;
resp.Message = "生成成功";
resp.Data = fileName;
}
else if (printType == "xlsx") //
{
var fileName = $"{DateTime.Now.Ticks}.xlsx";
var saveFile = Path.Combine(savePath, fileName);
Excel2007Export excelExport = new Excel2007Export();
excelExport.Export(report, saveFile);
resp.Success = true;
resp.Message = "生成成功";
resp.Data = fileName;
}
else if (printType == "docx") //
{
var fileName = $"{DateTime.Now.Ticks}.docx";
var saveFile = Path.Combine(savePath, fileName);
Word2007Export excelExport = new Word2007Export();
excelExport.Export(report, saveFile);
resp.Success = true;
resp.Message = "生成成功";
resp.Data = fileName;
}
else
{
resp.Success = false;
resp.Message = "类型参数不正确";
}
return Json(resp);
}
catch (Exception ex)
{
resp.Success = false;
resp.Message = ex.Message;
log.Error(ex.Message);
log.Error(ex.StackTrace);
}
}
else
{
resp.Success = false;
resp.Message = "未上传模板文件";
}
return Json(resp);
}
/// <summary>
/// 根据文件名获取文件
/// </summary>

Loading…
Cancel
Save