You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

284 lines
16 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using LanguageExt;
using Masuit.Tools.Strings;
using Microsoft.AspNetCore.Identity;
using NPOI.HPSF;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static iText.StyledXmlParser.Jsoup.Select.Evaluator;
namespace DS.WMS.Core.Utils
{
public class ExportFileHelper
{
// /// <summary>
// /// 导出
// /// </summary>
// /// <typeparam name="T"></typeparam>
// /// <param name="list"></param>
// /// <param name="colDicts"></param>
// /// <returns></returns>
// public async Task<string> Export<T>(List<T> dataLiist, Dictionary<string,string> colDicts)
// {
// string filePath = string.Empty;
// /*
// 1、生成空Excel文件。
// 2、根据colDicts提供的key来匹配字段列表的
// 3、暂存文件并返回完整文件名
// */
// try
// {
// string sheetName = "";
// XSSFWorkbook workbook = new XSSFWorkbook();
// ISheet sheet = workbook.CreateSheet(sheetName);
// #region Excel模板打印
// //var opt = App.GetOptions<PrintTemplateOptions>();
// //var dirAbs = opt.basePath;
// //if (string.IsNullOrEmpty(dirAbs))
// //{
// // dirAbs = App.WebHostEnvironment.WebRootPath;
// //}
// var fileAbsPath = Path.Combine(dirAbs, printTemplate.FilePath);
// //_logger.LogInformation($"准备调用EXCEL生成id{id},文件:{printTemplate.FileName}");
// var result = new FileStream(fileAbsPath, FileMode.Open);
// var excelwork = new HSSFWorkbook(result);
// var sheet = excelwork.GetSheetAt(0);
// var entity = await _bookingExcelTemplateRepository.AsQueryable()
// .Where(x => x.PId == templateId).OrderBy(x => x.Row).ToListAsync();
// if (entity == null)
// {
// throw Oops.Bah("当前模板未设置");
// }
// for (int _row = 1; _row <= entity.Max(x => x.Row); _row++)
// {
// if (entity.Where(x => x.Row == _row).Count() > 0)
// {
// ////获取行
// var row = sheet.GetRow(_row - 1);
// if (row != null)
// {
// for (int _cellNum = 1; _cellNum <= entity.Max(x => x.Column); _cellNum++)
// {
// if (entity.Where(x => x.Row == _row && x.Column == _cellNum).Count() > 0)
// {
// var name = entity.Where(x => x.Row == _row && x.Column == _cellNum).Select(x => x.Field).FirstOrDefault();
// if (name.Split('.')[0].ToLower() == "order")
// {
// foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(order))
// {
// var _name = descriptor.Name.ToLower();
// if (name.Split('.')[0].ToLower() == "order" && name.Split('.')[1].ToLower() == _name)
// {
// var value = descriptor.GetValue(order) != null ? descriptor.GetValue(order).ToString() : "";
// ICell cell = row.GetCell(_cellNum - 1);
// if (descriptor.PropertyType.FullName.Contains("DateTime"))
// {
// value = value != "" ? Convert.ToDateTime(value).ToString("yyyy-MM-dd") : "";
// }
// if (cell != null)
// {
// row.Cells[_cellNum - 1].SetCellValue(value);
// }
// else
// {
// row.CreateCell(_cellNum - 1).SetCellValue(value);
// }
// }
// }
// }
// if (name.Split('.')[0].ToLower() == "edi")
// {
// foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(edi))
// {
// var _name = descriptor.Name.ToLower();
// if (name.Split('.')[0].ToLower() == "edi" && name.Split('.')[1].ToLower() == _name)
// {
// var value = descriptor.GetValue(edi) != null ? descriptor.GetValue(edi).ToString() : "";
// ICell cell = row.GetCell(_cellNum - 1);
// if (descriptor.PropertyType.FullName.Contains("DateTime"))
// {
// value = value != "" ? Convert.ToDateTime(value).ToString("yyyy-MM-dd") : "";
// }
// if (cell != null)
// {
// row.Cells[_cellNum - 1].SetCellValue(value);
// }
// else
// {
// row.CreateCell(_cellNum - 1).SetCellValue(value);
// }
// }
// }
// }
// if (name.Split('.')[0].ToLower() == "userinfo")
// {
// ICell cell = row.GetCell(_cellNum - 1);
// var value = string.Empty;
// if (name.Split('.')[1].ToLower() == "username")
// {
// value = UserManager.Name;
// }
// if (name.Split('.')[1].ToLower() == "usertel")
// {
// value = UserManager.TEl;
// }
// if (name.Split('.')[1].ToLower() == "usermobile")
// {
// value = UserManager.Phone;
// }
// if (name.Split('.')[1].ToLower() == "useremail")
// {
// value = UserManager.Email;
// }
// if (name.Split('.')[1].ToLower() == "usertenant")
// {
// value = UserManager.TENANT_NAME;
// }
// if (cell != null)
// {
// row.Cells[_cellNum - 1].SetCellValue(value);
// }
// else
// {
// row.CreateCell(_cellNum - 1).SetCellValue(value);
// }
// }
// }
// }
// }
// else
// {
// ////创建行
// var srow = NpoiExcelExportHelper._.CreateRow(sheet, _row - 1);
// for (int _cellNum = 1; _cellNum <= entity.Max(x => x.Column); _cellNum++)
// {
// if (entity.Where(x => x.Row == _row && x.Column == _cellNum).Count() > 0)
// {
// var name = entity.Where(x => x.Row == _row && x.Column == _cellNum).Select(x => x.Field).FirstOrDefault();
// if (name.Split('.')[0].ToLower() == "order")
// {
// foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(order))
// {
// var _name = descriptor.Name.ToLower();
// if (name.Split('.')[1].ToLower() == _name && name.Split('.')[0].ToLower() == "order")
// {
// var value = descriptor.GetValue(order) != null ? descriptor.GetValue(order).ToString() : "";
// if (descriptor.PropertyType.FullName.Contains("DateTime"))
// {
// value = value != "" ? Convert.ToDateTime(value).ToString("yyyy-MM-dd") : "";
// }
// srow.CreateCell(_cellNum - 1).SetCellValue(value);
// }
// }
// }
// if (name.Split('.')[0].ToLower() == "edi")
// {
// foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(edi))
// {
// var _name = descriptor.Name.ToLower();
// if (name.Split('.')[1].ToLower() == _name && name.Split('.')[0].ToLower() == "edi")
// {
// var value = descriptor.GetValue(edi) != null ? descriptor.GetValue(edi).ToString() : "";
// if (descriptor.PropertyType.FullName.Contains("DateTime"))
// {
// value = value != "" ? Convert.ToDateTime(value).ToString("yyyy-MM-dd") : "";
// }
// srow.CreateCell(_cellNum - 1).SetCellValue(value);
// }
// }
// }
// if (name.Split('.')[0].ToLower() == "userinfo")
// {
// var value = string.Empty;
// if (name.Split('.')[1].ToLower() == "username")
// {
// value = UserManager.Name;
// }
// if (name.Split('.')[1].ToLower() == "usertel")
// {
// value = UserManager.TEl;
// }
// if (name.Split('.')[1].ToLower() == "usermobile")
// {
// value = UserManager.Phone;
// }
// if (name.Split('.')[1].ToLower() == "useremail")
// {
// value = UserManager.Email;
// }
// if (name.Split('.')[1].ToLower() == "usertenant")
// {
// value = UserManager.TENANT_NAME;
// }
// srow.CreateCell(_cellNum - 1).SetCellValue(value);
// }
// }
// }
// }
// }
// }
// var fileFullPath = Path.Combine(App.WebHostEnvironment.WebRootPath, App.GetOptions<TempFileOptions>().Path);//服务器路径
// if (!Directory.Exists(fileFullPath))
// {
// Directory.CreateDirectory(fileFullPath);
// }
// fileName = $"{DateTime.Now.Ticks}.xls";//名称
// ////2023-4-3根据河川操作要求文件名只带提单号
// //if (!string.IsNullOrEmpty(order.MBLNO))
// //{
// // fileName = $"{order.MBLNO}.xls";//名称
// //}
// //else
// //{
// // fileName = $"{order.Id}_{DateTime.Now.Ticks}.xls";//名称
// //}
// _logger.LogInformation("导出excel:" + Path.Combine(fileFullPath, fileName));
// var filestream = new FileStream(Path.Combine(fileFullPath, fileName), FileMode.OpenOrCreate, FileAccess.ReadWrite);
// excelwork.Write(filestream);
// #endregion
// }
// catch (Exception ex)
// {
// }
// return filePath;
// }
//}
}
}