using System.Collections.Generic;
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.Style;
using System.Drawing;
using WZExport.Models;
using Utilty.Module.File.Source.Base;
using Microsoft.AspNetCore.Http;
using System;
using System.Text;
namespace WZExport.Utilitys
{
///
/// Excel导入导出助手
///
public class ExcelHelper
{
///
/// 导出授权记录
///
///
///
///
///
public static void ExportLm(IEnumerable lms, string fileName, string webRootFolder)
{
string filePath = Path.Combine(webRootFolder, $"{fileName}.xlxs");
FileInfo file = new FileInfo(filePath);
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (ExcelPackage package = new ExcelPackage(file))
{
// 添加worksheet
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("栏目");
//通用样式
worksheet.Cells.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
worksheet.Cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
worksheet.Cells.Style.Font.Size = 12;
worksheet.Cells.Style.Font.Bold = true;
worksheet.DefaultRowHeight = 40;
//添加表头
worksheet.Cells[1, 1].Value = "栏目类型";
worksheet.Cells[1, 1].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(1).Width = 15;
worksheet.Cells[1, 2].Value = "栏目id";
worksheet.Cells[1, 2].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(2).Width = 15;
worksheet.Cells[1, 3].Value = "栏目url";
worksheet.Cells[1, 3].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(3).Width = 15;
worksheet.Cells[1, 4].Value = "数据表名";
worksheet.Cells[1, 4].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(4).Width = 15;
worksheet.Cells[1, 5].Value = "元素据id";
worksheet.Cells[1, 5].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(5).Width = 15;
worksheet.Cells[1, 6].Value = "栏目说明";
worksheet.Cells[1, 6].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(6).Width = 40;
worksheet.Cells[1, 7].Value = "一级栏目";
worksheet.Cells[1, 7].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(7).Width = 40;
worksheet.Cells[1, 8].Value = "二级栏目";
worksheet.Cells[1, 8].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(8).Width = 40;
worksheet.Cells[1, 9].Value = "三级栏目";
worksheet.Cells[1, 9].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(9).Width = 40;
worksheet.Cells[1, 10].Value = "四级栏目";
worksheet.Cells[1, 10].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(10).Width = 40;
worksheet.Cells[1, 11].Value = "五级栏目";
worksheet.Cells[1, 11].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(11).Width = 40;
worksheet.Cells[1, 12].Value = "六级栏目";
worksheet.Cells[1, 12].Style.Font.Color.SetColor(Color.Red);
worksheet.Column(12).Width = 40;
int i = 1;
foreach (var lm in lms)
{
i++;
worksheet.Cells[i, 1].Value = "多信息";
worksheet.Cells[i, 2].Value = lm.Channelid;
worksheet.Cells[i, 3].Value = "";
worksheet.Cells[i, 4].Value = "";
worksheet.Cells[i, 5].Value = "";
worksheet.Cells[i, 6].Value = lm.Chnldesc;
worksheet.Cells[i, 6+lm.Siteid].Value = lm.Chnldesc;
//worksheet.Cells[i, 7].Value = lm.Chnldesc;
//worksheet.Cells[i, 8].Value = lm.Chnldesc;
//worksheet.Cells[i, 9].Value = lm.Chnldesc;
//worksheet.Cells[i, 10].Value = lm.Chnldesc;
//worksheet.Cells[i, 11].Value = lm.Chnldesc;
//worksheet.Cells[i, 12].Value = lm.Chnldesc;
}
package.Save();
//return File.OpenRead(filePath);
}
}
///
/// Excel导入
///
/// Excel文件
public static List ImportConfig(Stream excelFile)
{
List result = new List();
// 读取单个工作表sheet内容
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using (ExcelPackage package = new ExcelPackage(excelFile))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[0];
int rowCount = worksheet.Dimension.Rows;
Dictionary dic;
// 明细行
for (int row = 2; row <= rowCount; row++)
{
dic = new Dictionary();
dic.KeyLable = worksheet.Cells[row, 1].Value?.ToString().Trim();
dic.Value = worksheet.Cells[row, 2].Value?.ToString().Trim();
result.Add(dic);
}
}
return result;
}
public static void ExportLmUniversal(IEnumerable lms, string fileName, string webRootFolder)
{
string filePath=Path.Combine(webRootFolder, $"{fileName}.xls");
string sheetName = "栏目";
var sheetData = new List>();
var excelData=new Dictionary>> { [sheetName]= sheetData };
var headerData = new List();
headerData.Add("栏目类型");
headerData.Add("栏目id");
headerData.Add("栏目url");
headerData.Add("数据表名");
headerData.Add("元素据id");
headerData.Add("栏目说明");
headerData.Add("一级栏目");
headerData.Add("二级栏目");
headerData.Add("三级栏目");
headerData.Add("四级栏目");
headerData.Add("五级栏目");
headerData.Add("六级栏目");
sheetData.Add(headerData);
foreach (var lm in lms)
{
var rowData = new List();
rowData.Add("多信息");
rowData.Add(lm.Channelid.ToString());
rowData.Add("");
rowData.Add("");
rowData.Add("");
rowData.Add(lm.Chnldesc);
for (int i = 1; i <= 6; i++)
{
if(i==lm.Siteid) rowData.Add(lm.Chnldesc);
else rowData.Add("");
}
sheetData.Add(rowData);
}
new ExcelBase().CreateExcel(filePath,excelData);
}
}
}