NPOI 上传Excel功能(二)

3.上传文件,写入log

using DC.BE.Business.SYS;
using DC.BE.Entity.ERP;
using DC.BE.Entity.SAS;
using DC.BE.Entity.SYS;
using DC.Framework.Logging;
using DC.Framework.Logging.ELLAB;
using Excel;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DC.BE.Entity.Common;
using DC.Framework.Repository.Definition;
using System.Diagnostics;
using DC.Backend.Utility;
using DC.BE.Business.SYS.SYSBModel;
using DC.BE.Business.SAS;
using DC.BE.Entity.Security;
using DC.BE.BusinessImpl.Exceptions;
using DC.BE.BusinessImpl.SYS;

namespace DC.Website.MVC5.Controllers.SYS.Base
{
    public class BaseDataImportController : Controller
    {
        private readonly ITsysManagementBusiness _tsysManagementBusiness;
        private static readonly ILogger Logger = LoggerFactory.GetLogger(typeof(BaseDataImportController).FullName);
        private readonly ITsysStoreInfoBusiness _tsysStoreInfoBusiness;
        private readonly ITsasManagementBusiness _tsasManagementBusiness;
        private readonly ITsasRegCompanyBusiness _TsasRegCompanyBusiness;
        private readonly IUnitOfWork _unitOfWork;
        private readonly DcContext _dcContext;

        private readonly IUploadBaseDataBusiness _iuploadBaseDataToActualBusiness;
     
        public BaseDataImportController(ITsysManagementBusiness tsysManagementBusiness, ITsysStoreInfoBusiness tsysStoreInfoBusiness, IUnitOfWork unitOfWork, ITsasManagementBusiness tsasManagementBusiness, DcContext dcContext,
            ITsasRegCompanyBusiness TsasRegCompanyBusiness, IUploadBaseDataBusiness iUploadBaseDataToActualBusiness)
        {
            _tsysManagementBusiness = tsysManagementBusiness;
            _tsysStoreInfoBusiness = tsysStoreInfoBusiness;
            _unitOfWork = unitOfWork;
            _tsasManagementBusiness = tsasManagementBusiness;
            _dcContext = dcContext;
            _TsasRegCompanyBusiness = TsasRegCompanyBusiness;
            _iuploadBaseDataToActualBusiness = iUploadBaseDataToActualBusiness;
        }

        //上传基础数据EXCEL
        public JsonResult BaseDataTemplateImport(HttpPostedFileBase file)
        {
            string compId = Request["hid_value"];
            //this.DeleteTempDatabase();
            //this.CopyTempDatabase(compId);
            //读取配置文件上传路径
            //var sourceFolder = GlobalConfigurations.sourceFolder;
            var sourceFolder = Server.MapPath("/") + @"Imports\";
            String result = string.Empty;
            // v2.00.056 李恒宇 add_s 
            //System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(sourceFolder);
            //if (di.GetFiles().Length + di.GetDirectories().Length != 0)
            //{
            //    var ExistsFilePath = Path.Combine(sourceFolder, Path.GetFileName(file.FileName));
            //    if (System.IO.File.Exists(ExistsFilePath))
            //    {
            //        return "FileExists";
            //    }
            //}
            // v2.00.056 李恒宇 add_e 
            //路径不存在 创建路径
            if (!Directory.Exists(sourceFolder))
            {
                Directory.CreateDirectory(sourceFolder);
            }
            // v2.00.056 李恒宇 rep_s 
            //var FilePath = Path.Combine(sourceFolder,compId+" "+Path.GetFileName(file.FileName));
            Guid fileGuid = Guid.NewGuid();
            Guid userId = _dcContext.CurrentUser.Id;
            //string fileName = compId + Path.GetFileName(file.FileName).Split('.')[0] + "+" + fileGuid + ".xlsx";
            string fileName = compId + Path.GetFileName(file.FileName).Split('.')[0] + "+" + userId + "+" + fileGuid + ".xlsx";
            string passExcelName = compId + Path.GetFileName(file.FileName).Split('.')[0];
            var FilePath = Path.Combine(sourceFolder, Path.GetFileName(fileName));
            System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(sourceFolder);
            if (di.GetFiles().Length + di.GetDirectories().Length != 0)
            {
                FileInfo[] dirInfo = di.GetFiles();
                var existExcelName = "";
                foreach (FileInfo NextFolder in dirInfo)
                {
                    existExcelName = NextFolder.Name.Split('+')[0];
                    if (existExcelName.Equals(passExcelName))
                    {
                        NextFolder.Delete();
                    }
                }
            }
            // v2.00.056 李恒宇 rep_e 
            file.SaveAs(FilePath);
            // v2.00.056 李恒宇 rep_s 
            // return result;

            ResultData RDS = _iuploadBaseDataToActualBusiness.BaseDataTemplateImport(compId, FilePath);
            
            // 清除上传的表
            System.IO.File.Delete(FilePath);
            return Json(RDS);
            //return "FileSuccess";
            // v2.00.056 李恒宇 rep_e
        }

        public JsonResult GetAllDataImportByCompany(String jsonCompany)
        {
            List<BaseDataUploadBModel> result = _tsysManagementBusiness.GetAllDataImportByCompany(jsonCompany);
            return Json(result);
        }

        /// <summary>
        /// 复制临时DB
        /// </summary>
        /// <param name="compId"></param>
        public void CopyTempDatabase(String compId)
        {
            string connectionString = GlobalConfigurations.connectionString;
            string sourceDb = GlobalConfigurations.actualDB;//actualDB
            string targetDb = GlobalConfigurations.tempDB;//tempDB
            SmoBulkCopy.Copy(connectionString, sourceDb, targetDb, Guid.Parse(compId));
        }

        /// <summary>
        /// 删除临时DB
        /// </summary>
        public void DeleteTempDatabase()
        {
            string targetDb = GlobalConfigurations.tempDB;
            _tsysManagementBusiness.DeleteTempDatabase(targetDb);
        }

        public void PauseLogin(String compId)
        {
            if (compId == "" || compId == null)
            {
                return;
            }
            _tsasManagementBusiness.PauseLogin(Guid.Parse(compId));
        }

        public void RecoveryLogin(String compId)
        {
            if (compId == "" || compId == null)
            {
                return;
            }
            _tsasManagementBusiness.RecoveryLogin(Guid.Parse(compId));
        }

        //v2.00.152 吕毅飞 2017/3/24 add_s
        public ActionResult DownloadLog(string companyId)
        {
            string contentType = "application/txt";
            string log = System.Configuration.ConfigurationManager.AppSettings["baseDataImportLog"];
            Guid company = Guid.Parse(companyId);
            TsasRegCompany comp = _TsasRegCompanyBusiness.Get(company);
            log = log.Replace("BulkImportService.log", comp.CompanyLoginMark + "基础数据导入日志.txt");
            if (!System.IO.File.Exists(log))//目录下是否有文件
            {
                System.IO.FileStream fs = new FileStream(log, FileMode.OpenOrCreate);
                fs.Close();
            }
            var file = System.IO.File.Open(log, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            var stream = (Stream)(file);
            return File(stream, contentType, comp.CompanyLoginMark + "基础数据导入日志.txt");
        }
        //v2.00.152 吕毅飞 2017/3/24 add_e
    }
}
萌橙 你瞅啥?
原文地址:https://www.cnblogs.com/daimaxuejia/p/8144445.html