FileManageController
using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using PT.BLL; using PT.Common; using PT.Model; using PT.Web.Mvc.App_Start; namespace PT.Web.Mvc.Controllers { [LoginAuthorizationFilter] public class FileManageController : BaseController<FileManage, FileManage> { FileManageBll bll = new FileManageBll(); private SessionHelper sessionHelper; private readonly IHostingEnvironment _hostingEnvironment; public FileManageController(IHostingEnvironment hostingEnvironment) { _hostingEnvironment = hostingEnvironment; } public IActionResult Index() { return View(); } /// <summary> /// 上传文件 /// </summary> /// <param name="t"></param> /// <returns></returns> public IActionResult UploadFile(FileManage t) { ResponseResult result = new ResponseResult() { code = 0, msg = "成功", data = 0 }; try { sessionHelper = new SessionHelper(HttpContext.Session); UserList user = sessionHelper.GetUserInfoString(); string msg = string.Empty; //LoggerHelper._.Info("1"); HttpRequest request = Request; //string TargetID = request.Form["TargetID"]; //string TargetTable = request.Form["TargetTable"]; //string TargetField = request.Form["TargetField"]; //string Remarks = request.Form["Remarks"]; string webRootPath = _hostingEnvironment.WebRootPath; string contentRootPath = _hostingEnvironment.ContentRootPath; string uploadPath = contentRootPath + "\\FileManage\\" + t.TargetTable + "\\" + DateTime.Now.ToString("yyyyMMdd") + "\\";// Server.MapPath("~/FileManage/" + TargetTable + "/" + DateTime.Now.ToString("yyyyMMdd") + "/"); var fileCollection = request.Form.Files; // 判断是否有文件 if (fileCollection.Count > 0) { //LoggerHelper._.Info("3"); // 获取文件 var httpPostedFile = fileCollection[0]; string fileExtension = Path.GetExtension(httpPostedFile.FileName);// 文件扩展名 //string fileName = Path.GetFileNameWithoutExtension(httpPostedFile.FileName); string fileName = Guid.NewGuid().ToString() + fileExtension;// 名称 string filePath = uploadPath + fileName;// 上传路径 //LoggerHelper._.Info("5:"+ filePath); // 如果目录不存在则要先创建 if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } // 保存新的文件 while (System.IO.File.Exists(filePath)) { fileName = Guid.NewGuid().ToString() + fileExtension; filePath = uploadPath + fileName; } //httpPostedFile.SaveAs(filePath); using (FileStream fs = System.IO.File.Create(filePath)) { httpPostedFile.CopyTo(fs); fs.Flush(); } msg = "上传成功"; t.FileName = httpPostedFile.FileName; t.FileGuidName = fileName; t.FileSize = httpPostedFile.Length; t.FilePath = filePath; //fileManage.TargetId = TargetID; //fileManage.TargetTable = TargetTable; //fileManage.TargetField = TargetField; //fileManage.Remark = Remarks; t.IsDelete = false; t.CreatBy = user.Id + "|" + user.UserID + "|" + user.UserName; t.CreatDate = DateTime.Now; result.msg = bll.InsertableIgnoreColumns(t).ToString(); result.data = t; } } catch (Exception ex) { result.code = -1; result.msg = ex.Message; } var res = new JsonResult(result); return res; } /// <summary> /// 上传文件 不存文件管理表 /// </summary> /// <param name="t"></param> /// <returns></returns> public IActionResult UploadFileNotSaveData(string TargetTable) { ResponseResult result = new ResponseResult() { code = 0, msg = "成功", data = 0 }; try { FileManage fileManage = new FileManage(); HttpRequest request = Request; string webRootPath = _hostingEnvironment.WebRootPath; string contentRootPath = _hostingEnvironment.ContentRootPath; string uploadPath = contentRootPath + "\\FileManage\\" + TargetTable + "\\" + DateTime.Now.ToString("yyyyMMdd") + "\\";// Server.MapPath("~/FileManage/" + TargetTable + "/" + DateTime.Now.ToString("yyyyMMdd") + "/"); var fileCollection = request.Form.Files; // 判断是否有文件 if (fileCollection.Count > 0) { //LoggerHelper._.Info("3"); // 获取文件 var httpPostedFile = fileCollection[0]; string fileExtension = Path.GetExtension(httpPostedFile.FileName);// 文件扩展名 //string fileName = Path.GetFileNameWithoutExtension(httpPostedFile.FileName); string fileName = Guid.NewGuid().ToString() + fileExtension;// 名称 string filePath = uploadPath + fileName;// 上传路径 //LoggerHelper._.Info("5:"+ filePath); // 如果目录不存在则要先创建 if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } // 如果文件名已存在则生成新的文件名 while (System.IO.File.Exists(filePath)) { fileName = Guid.NewGuid().ToString() + fileExtension; filePath = uploadPath + fileName; } //保存 using (FileStream fs = System.IO.File.Create(filePath)) { httpPostedFile.CopyTo(fs); fs.Flush(); } fileManage.FileName = httpPostedFile.FileName; fileManage.FileGuidName = fileName; fileManage.FileSize = httpPostedFile.Length; fileManage.FilePath = filePath; fileManage.TargetId = ""; fileManage.TargetTable = TargetTable; fileManage.TargetField = ""; fileManage.Remark = ""; fileManage.IsDelete = false; //fileManage.CreatBy = user.Id + "|" + user.UserID + "|" + user.UserName; fileManage.CreatDate = DateTime.Now; result.data = fileManage; } } catch (Exception ex) { result.code = -1; result.msg = ex.Message; } var res = new JsonResult(result); return res; } /// <summary> /// 导出 excel /// </summary> /// <returns></returns> public IActionResult ExportExcel2() { ResponseResult result = new ResponseResult() { code = 0, msg = "成功", data = 0 }; try { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = "AA" }); dt.Columns.Add(new DataColumn() { ColumnName = "BB" }); DataRow dr = dt.NewRow(); dr[0] = "11"; dr[1] = "22"; dt.Rows.Add(dr); //string[] fileArr = file.Split(new char[] { '.' }); string file = "测试" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx"; IWorkbook workbook; string fileExt = Path.GetExtension(file).ToLower(); if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(); } else { workbook = null; } if (workbook == null) { return null; } ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName); //设置列宽 //sheet.SetColumnWidth(0, 15 * 256); //sheet.SetColumnWidth(1, 15 * 256); //sheet.SetColumnWidth(2, 15 * 256); //sheet.SetColumnWidth(3, 15 * 256); //sheet.SetColumnWidth(4, 15 * 256); //sheet.SetColumnWidth(5, 25 * 256); //sheet.SetColumnWidth(6, 25 * 256); //sheet.SetColumnWidth(7, 30 * 256); //sheet.SetColumnWidth(8, 15 * 256); //sheet.SetColumnWidth(9, 15 * 256); //sheet.SetColumnWidth(10, 15 * 256); //sheet.SetColumnWidth(12, 15 * 256); //for (int i = 0; i < dt.Rows.Count; i++) //{ // sheet.SetColumnWidth(i, 20 * 256); //} //表头 IRow row = sheet.CreateRow(0); for (int i = 0; i < dt.Columns.Count; i++) { ICell cell = row.CreateCell(i); cell.SetCellValue(dt.Columns[i].ColumnName); } //HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch(); ICellStyle style = workbook.CreateCellStyle(); ICellStyle style2 = workbook.CreateCellStyle(); string val = ""; //数据 for (int i = 0; i < dt.Rows.Count; i++) { IRow row1 = sheet.CreateRow(i + 1); for (int j = 0; j < dt.Columns.Count; j++) { ICell cell = row1.CreateCell(j); val = dt.Rows[i][j].ToString(); cell.SetCellValue(val); } } //设置行高 //HSSFCellStyle cellStyle = (HSSFCellStyle)workbook.CreateCellStyle(); //IRow row2 = sheet.GetRow(2); //row2.HeightInPoints = 120; //row2.GetCell(2).CellStyle = cellStyle; //转为字节数组 MemoryStream stream = new MemoryStream(); workbook.Write(stream, true); var buf = stream.ToArray(); string webRootPath = _hostingEnvironment.WebRootPath + "\\Downloads\\"; string Route = webRootPath;// @"C:\Downloads\"; //如找不到文件夹则创建 if (!Directory.Exists(Route)) { Directory.CreateDirectory(Route); } //保存为Excel文件 using (FileStream fs = new FileStream(Route + file, FileMode.Create, FileAccess.Write)) { fs.Write(buf, 0, buf.Length); fs.Flush(); fs.Close(); fs.Dispose(); result.data = file; } //xls //return File(stream, "application/application/vnd.ms-excel", $"{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")}"); //xlsx /* * * 前端调用 $.ajax({ type: "Get", url: "/FileManage/ExportExcel2", async: true, data: {}, success: function (data) { window.open('/Downloads/' + data.data, '_blank'); } }); */ } catch (Exception ex) { //LoggerHelper._.Error(ex.ToString()); } var res = new JsonResult(result); return res; } /// <summary> /// 导出 excel /// </summary> /// <returns></returns> [HttpGet] public FileStreamResult ExportExcel() { try { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = "AA" }); dt.Columns.Add(new DataColumn() { ColumnName = "BB" }); DataRow dr = dt.NewRow(); dr[0] = "11"; dr[1] = "22"; dt.Rows.Add(dr); //string[] fileArr = file.Split(new char[] { '.' }); string file = "测试" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx"; IWorkbook workbook; string fileExt = Path.GetExtension(file).ToLower(); if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(); } else { workbook = null; } if (workbook == null) { return null; } ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName); //设置列宽 //sheet.SetColumnWidth(0, 15 * 256); //sheet.SetColumnWidth(1, 15 * 256); //sheet.SetColumnWidth(2, 15 * 256); //sheet.SetColumnWidth(3, 15 * 256); //sheet.SetColumnWidth(4, 15 * 256); //sheet.SetColumnWidth(5, 25 * 256); //sheet.SetColumnWidth(6, 25 * 256); //sheet.SetColumnWidth(7, 30 * 256); //sheet.SetColumnWidth(8, 15 * 256); //sheet.SetColumnWidth(9, 15 * 256); //sheet.SetColumnWidth(10, 15 * 256); //sheet.SetColumnWidth(12, 15 * 256); //for (int i = 0; i < dt.Rows.Count; i++) //{ // sheet.SetColumnWidth(i, 20 * 256); //} //表头 IRow row = sheet.CreateRow(0); for (int i = 0; i < dt.Columns.Count; i++) { ICell cell = row.CreateCell(i); cell.SetCellValue(dt.Columns[i].ColumnName); } //HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch(); ICellStyle style = workbook.CreateCellStyle(); ICellStyle style2 = workbook.CreateCellStyle(); string val = ""; //数据 for (int i = 0; i < dt.Rows.Count; i++) { IRow row1 = sheet.CreateRow(i + 1); for (int j = 0; j < dt.Columns.Count; j++) { ICell cell = row1.CreateCell(j); val = dt.Rows[i][j].ToString(); cell.SetCellValue(val); } } //设置行高 //HSSFCellStyle cellStyle = (HSSFCellStyle)workbook.CreateCellStyle(); //IRow row2 = sheet.GetRow(2); //row2.HeightInPoints = 120; //row2.GetCell(2).CellStyle = cellStyle; //转为字节数组 MemoryStream stream = new MemoryStream(); workbook.Write(stream, true); var buf = stream.ToArray(); string webRootPath = _hostingEnvironment.WebRootPath + "\\Downloads\\"; string Route = webRootPath;// @"C:\Downloads\"; //如找不到文件夹则创建 if (!Directory.Exists(Route)) { Directory.CreateDirectory(Route); } //保存为Excel文件 using (FileStream fs = new FileStream(Route + file, FileMode.Create, FileAccess.Write)) { fs.Write(buf, 0, buf.Length); fs.Flush(); fs.Close(); fs.Dispose(); } //xls //return File(stream, "application/application/vnd.ms-excel", $"{DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")}"); //xlsx return File(stream, "application/vnd.ms-excel", Route + file); } catch (Exception ex) { //LoggerHelper._.Error(ex.ToString()); } return null; } } }