/// <summary>
???/// 使用Aspose读取Excel数据
???/// </summary>
???public class ExcelHelperCore
???{
???????/// <summary>
???????///
???????/// </summary>
???????/// <typeparam name="T"></typeparam>
???????/// <param name="fields"></param>
???????/// <param name="list"></param>
???????/// <param name="fileName"></param>
???????/// <returns></returns>
???????public static OperationResult ExportExcel<T>(Dictionary<string, string> fields, IEnumerable<T> list, string fileName)
??????????where T : new()
???????{
???????????if (fields == null || fields.Count == 0)
???????????{
???????????????return new OperationResult(OperationResultType.ParamError, "先指定字段");
???????????}
???????????var workbook = new Workbook();
???????????var sheet = workbook.Worksheets[0];
???????????var cells = sheet.Cells;
???????????Style style = workbook.Styles[workbook.Styles.Add()];//新增样式
???????????style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
???????????style.Font.Name = "宋体";//文字字体
???????????style.Font.Size = 10;//文字大小
???????????style.Font.IsBold = true;//粗体
???????????int i = 0;
???????????foreach (KeyValuePair<string, string> keyValuePair in fields)
???????????{
???????????????cells[0, i].SetStyle(style); ???????????//给单元格关联样式
???????????????cells.SetRowHeight(0, 18); ?????????????//设置行高 ?
???????????????cells.SetColumnWidth(i, 16);//设置列宽
???????????????//列头
???????????????cells[0, i].PutValue(keyValuePair.Value);
???????????????i++;
???????????}
???????????PropertyInfo[] properties = new T().GetType().GetProperties();
???????????int row = 1;
???????????foreach (T item in list)
???????????{
???????????????i = 0;
???????????????foreach (KeyValuePair<string, string> keyValuePair in fields)
???????????????{
???????????????????foreach (PropertyInfo property in properties)
???????????????????{
???????????????????????if (property.Name == keyValuePair.Key)
???????????????????????{
???????????????????????????if (property.PropertyType.Name.StartsWith("DateTime"))
???????????????????????????{
???????????????????????????????var time = Convertor.ConvertToDateTime(property.GetValue(item), DateTime.MinValue);
???????????????????????????????if (time == DateTime.MinValue || time < new DateTime(2010, 1, 1))
???????????????????????????????{
???????????????????????????????????cells[row, i].PutValue("");
???????????????????????????????}
???????????????????????????????else
???????????????????????????????{
???????????????????????????????????cells[row, i].PutValue(time.ToString("yyyy-MM-dd HH:mm"));
???????????????????????????????}
???????????????????????????}
???????????????????????????else
???????????????????????????{
???????????????????????????????cells[row, i].PutValue(property.GetValue(item));
???????????????????????????}
???????????????????????}
???????????????????}
???????????????????i++;
???????????????}
???????????????row++;
???????????}
???????????workbook.Save(HttpContext.Current.Response, fileName, ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Xlsx));
???????????return new OperationResult(OperationResultType.Success, "导出成功");
???????}
???????/// <summary>
???????/// 表单导出
???????/// </summary>
???????/// <typeparam name="T"></typeparam>
???????/// <param name="colums"></param>
???????/// <param name="property"></param>
???????/// <param name="list"></param>
???????/// <param name="fileName"></param>
???????/// <returns></returns>
???????public static OperationResult ExportExcelForm<T>(List<string> colums, string property, IEnumerable<IEnumerable<T>> list, string fileName)
??????????where T : new()
???????{
???????????if (colums == null || colums.Count == 0)
???????????{
???????????????return new OperationResult(OperationResultType.ParamError, "先指定字段");
???????????}
???????????var workbook = new Workbook();
???????????var sheet = workbook.Worksheets[0];
???????????var cells = sheet.Cells;
???????????Style style = workbook.Styles[workbook.Styles.Add()];//新增样式
???????????style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
???????????style.Font.Name = "宋体";//文字字体
???????????style.Font.Size = 10;//文字大小
???????????style.Font.IsBold = true;//粗体
???????????int i = 0;
???????????#region collumn set
???????????foreach (var c in colums)
???????????{
???????????????cells[0, i].SetStyle(style); ???????????//给单元格关联样式
???????????????cells.SetRowHeight(0, 18); ?????????????//设置行高 ?
???????????????cells.SetColumnWidth(i, 16);//设置列宽
???????????????//列头
???????????????cells[0, i].PutValue(c);
???????????????i++;
???????????}
???????????#endregion
???????????if (null == list || !list.Any())
???????????{
???????????????return new OperationResult(OperationResultType.ParamError, "导出内容不能为空");
???????????}
???????????PropertyInfo[] properties = new T().GetType().GetProperties();
???????????int row = 1;
???????????foreach (IEnumerable<T> lst in list)
???????????{
???????????????i = 0;
???????????????foreach (T item in lst)
???????????????{
???????????????????if (i > colums.Count)
???????????????????{
???????????????????????break;
???????????????????}
???????????????????foreach (PropertyInfo p in properties)
???????????????????{
???????????????????????if (p.Name == property)
???????????????????????{
???????????????????????????cells[row, i].PutValue(p.GetValue(item));
???????????????????????}
???????????????????}
???????????????????i++;
???????????????}
???????????????row++;
???????????}
???????????workbook.Save(HttpContext.Current.Response, fileName, ContentDisposition.Attachment, new XlsSaveOptions(SaveFormat.Xlsx));
???????????return new OperationResult(OperationResultType.Success, "导出成功");
???????}
???????public static DataTable ExcelToDatatalbe(String strFileName)//导入
???????{
???????????Workbook book = new Workbook(strFileName);
???????????Worksheet sheet = book.Worksheets[0];
???????????Cells cells = sheet.Cells;
???????????//获取excel中的数据保存到一个datatable中
???????????DataTable dt_Import = cells.ExportDataTableAsString(1, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, false);
???????????// dt_Import.
???????????return dt_Import;
???????}
???}
文件导出 Aspose
原文地址:https://www.cnblogs.com/zlj-rechio/p/9953662.html