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('.')[] + "+" + userId + "+" + fileGuid + ".xlsx";
string passExcelName = compId + Path.GetFileName(file.FileName).Split('.')[];
var FilePath = Path.Combine(sourceFolder, Path.GetFileName(fileName));
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(sourceFolder);
if (di.GetFiles().Length + di.GetDirectories().Length != )
{
FileInfo[] dirInfo = di.GetFiles();
var existExcelName = "";
foreach (FileInfo NextFolder in dirInfo)
{
existExcelName = NextFolder.Name.Split('+')[];
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
}
}
NPOI 上传Excel功能(二)的更多相关文章
- NPOI 上传Excel功能
1.首先写一个Excel表格,第一行数据库类型(varchar.date.decimal).第二行数据库类型长度(100.12,4.时间日期为空)2.html 加按钮 { type: "bu ...
- NPOI 上传Excel功能(三)
4.验证Excel并上传 using DC.BE.Business.SAS; using DC.BE.Business.SYS; using DC.BE.Entity.SAS; using DC.BE ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- .Net NPOI 上传excel文件、提交后台获取excel里的数据
1.导入NPOI.dll 2.添加类NPOIExcel.cs using System; using System.Collections.Generic; using System.Text; us ...
- 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
----------------------------------------------------------------------------------------------[版权申明: ...
- Salesforce LWC学习(三十二)实现上传 Excel解析其内容
本篇参考:salesforce lightning零基础学习(十七) 实现上传 Excel解析其内容 上一篇我们写了aura方式上传excel解析其内容.lwc作为salesforce的新宠儿,逐渐的 ...
- 微信小程序上传Excel文本文件功能
问题: 在开发过程中会发现微信小程序有很多功能都还不能满足我们的需求,谁叫客户就是上帝呢,前几天小编遇到了这么个问题,就是用微信小程序上传文件,但是还以为微信带有这个模块,可是查了许久还是没有找到,只 ...
- java上传excel到后台解析入库
背景:最近需要做一个excel模板导入的功能,以便用户可以自己增删改查数据,当然,只有特别的用户才能有此权限,捋了捋思路,还是从前端写起 实现: 页面最后的效果如下,可以自己修改,删除,导入导出数据, ...
- js上传Excel文件
一.问题 需要在项目里添加一个上传excel文件的功能,因为其他同样的后台里面有上传文件的功能,第一反应就是想着直接用.了解了一下发现它是利用bootstrap的fileinput实现的,但是我怎么都 ...
随机推荐
- 20175329 2018-2019-3《Java程序设计》第五周学习总结
学号 20175329 2018-2019-3<Java程序设计>第五周学习总结 教材学习内容总结 第六章 接口与实现 使用关键字interface来定义一个接口.接口定义和类的定义十分相 ...
- Feature Extractor[ResNet v2]
0. 背景 何凯明大神等人在提出了ResNet网络结构之后,对其做了进一步的分析工作,详细的分析了ResNet 构建块能起作用的本质所在.并通过一系列的实验来验证恒等映射的重要性,并由此提出了新的构建 ...
- vue 2.0多页面开发
1.为项目添加多个入口 找到\build\webpack.base.conf.js文件: module.exports = { //..., //vue的多页面开发:应用程序可以存在多个入口 entr ...
- Maven 多模块引用版本的问题 java.lang.NoSuchMethodError
环境:Junit测试用例 java.lang.NoSuchMethodError 很明显的错误,肯定是jar版本的问题 前提 Maven 打包并没有这个的问题,估计是做了优化处理 原测试代码 @Run ...
- A2D JS框架 - loadScript实现
其实这个功能比较小,本着自己造轮子的优良传统....就自己造一个好了 <head> <title></title> <script src="A2D ...
- node express 静态资源
实例代码 const express = require('express') const path = require('path') const app = express() app.use(e ...
- Visual studio 2015 Community 安装过程中遇到问题的终极解决
早就有给自己电脑升级VS的想法,可是安装过程并不顺利,一直拖到现在,昨天下定决心,把遇到的问题一个个解决,终于安装成功了,将安装过程中遇到的问题和解决方法记录一下. 需要说明一下的是,不同的电脑环境可 ...
- Windows Community Toolkit 3.0 - InfiniteCanvas
概述 InfiniteCanvas 是一个 Canvas 控件,它支持无限画布的滚动,支持 Ink,文本,格式文本,画布缩放操作,撤销重做操作,导入和导出数据. 这是一个非常实用的控件,在“来画视频” ...
- PV、UV、IP、TPS、QPS、RPS、两天、吞吐量、 并发用户数 术语
跟网站打交道,经常可以听到数据分析之类的专有名词,如pv多少.ip多少.tps多少之类的问题.下面就这些常见的数据给出其释义. PV 即 page view,页面浏览量 用户每一次 ...
- 小P的秘籍
题目描述 小P马上就要来到程序设计大赛的现场.上了,他希望能够AK这次比赛,所以他找到了一个字符串. 这个字符串长度为n,由A和K组成.这个字符串被小p称为AK串.小P任意截取一个区间s,使得这个区间 ...