.net core ajax使用EPPlus上传excle导入总结
2024-09-02 06:56:14
前端
<form class="layui-form" id="div_imp" style="display:none;">
<div class="layui-row">
<div class="layui-col-xs11">
<div class="layui-form-item">
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs11">
<div class="layui-form-item">
<label for="Goodsno" class="layui-form-label">
<span>附件</span>
</label>
<div class="layui-input-block">
<input type="file" name="goodsfile" id="goodsfile" class="layui-input" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
</div>
</div>
</div>
<div class="layui-col-xs11">
<div class="layui-form-item">
<label for="Goodsno" class="layui-form-label">
<span></span>
</label>
<div class="layui-input-block">
<span class="we-red"><a href="~/import/商品导入模板.xlsx">点我下载最新模板</a></span>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<button class="layui-btn" lay-filter="import" lay-submit="" onclick="import_submit()">导入</button>
</div>
</div>
</form>
<javascript>
function import_submit() {
var file;
$('#import').attr('disabled', true);//.find('i').removeClass('layui-hide');
var fordata = new FormData();
fordata.append("file", $('#goodsfile')[0].files[0]); //传给后台的file的key值是可以自己定义的
$.ajax({
url: "/Goods/Import",
type: "POST",
data: fordata,
cache: false,
processData: false,
contentType: false,
success: function (res) {
if (res.code == 0) {
parent.layer.close(index);
parent.layer.msg('导入成功', { time: 3000 });
parent.table.reload("test", { where: { "key": $("#goodsname").val() } });
} else {
layer.msg("导入失败 " + res.msg, { time: 3000 });
$('#add').attr('disabled', false).find('i').removeClass('layui-hide');
}
},
error: function (e) {
$('#add').attr('disabled', false).find('i').removeClass('layui-hide');
layer.msg("导入失败 " + res.msg, { time: 3000 });
}
});
}
</script>
后端
[HttpPost]
public IActionResult Import([FromForm(Name = "file")]IFormFile excelfile)
{
HandleResult<string> result = new HandleResult<string>{ Code=(int)StatusCodeEnum.ERROR_SYSTEM, success=false, Msg=StatusCodeEnum.ERROR_SYSTEM.ToDescription() };
string sWebRootFolder = _hostingEnvironment.WebRootPath+ @"\import_tmp\";
string sFileName = $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}-{Guid.NewGuid()}.xlsx";
FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
if (file.Exists)
{
file.Delete();
file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
}
try
{
using (FileStream fs = new FileStream(file.ToString(), FileMode.Create))
{
excelfile.CopyTo(fs);
fs.Flush();
}
using (ExcelPackage package = new ExcelPackage(file))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
int rowCount = worksheet.Dimension.Rows;
int ColCount = worksheet.Dimension.Columns;
var goods = new List<pub_goods>();
if (file.Exists)
{
file.Delete();
}
for (int row =2; row <= rowCount; row++)
{
pub_goods pub_Goods = new pub_goods();
pub_Goods.GoodsID = Guid.NewGuid().ToString();
pub_Goods.CompanyID = Application.WebContext.CompanyID;
pub_Goods.State = "1";
pub_Goods.Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
pub_Goods.Is_del = "0";
pub_Goods.Goodsno = worksheet.Cells[row, 1].Value == null ? "" : worksheet.Cells[row,1].Value.ToString();
pub_Goods.Goodsname = worksheet.Cells[row,2].Value == null ? "" : worksheet.Cells[row, 2].Value.ToString();
pub_Goods.Goodstype = worksheet.Cells[row, 3].Value == null ? "" : worksheet.Cells[row, 3].Value.ToString();
pub_Goods.Unit = worksheet.Cells[row, 4].Value == null ? "" : worksheet.Cells[row, 4].Value.ToString();
pub_Goods.Goodscode = worksheet.Cells[row, 5].Value == null ? "" : worksheet.Cells[row, 5].Value.ToString();
pub_Goods.Approval = worksheet.Cells[row, 6].Value == null ? "" : worksheet.Cells[row, 6].Value.ToString();
pub_Goods.Factory = worksheet.Cells[row, 7].Value == null ? "" : worksheet.Cells[row, 7].Value.ToString();
pub_Goods.dosage = worksheet.Cells[row, 8].Value==null?"": worksheet.Cells[row, 8].Value.ToString();
goods.Add(pub_Goods);
}
result =_goodsService.AddListAsync(goods).Result;
}
}
catch (Exception ex)
{
Logger.Default.ProcessError((int)StatusCodeEnum.ERROR_SYSTEM, ex.Message);
}
return Ok(result);
}
技术要点:
1.上传附件<input type="file" name="goodsfile" id="goodsfile" class="layui-input" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
accept可设置默认允许的文件类型,也可选择其他文件类型,需要后台加判断限制文件类型.
2.使用IFormFile一定要加上[FromForm(Name = "file")],否则IFormFile为null,file为前端自定义的文件参数名
3.附件添加 var fordata = new FormData(); fordata.append("file", $('#goodsfile')[0].files[0]); processData和contentType一定要设为false
最新文章
- 51nod 简单的动态规划
- Angular2 管道
- asp.net环境搭建
- [原创]Matlab之GUI生成EXE文件
- 100款免费的圣诞节矢量图标素材(PSD &; SVG)
- Magento的价格去掉小数点
- linux shell 参数传递
- 《HTML5与CSS3基础教程》学习笔记 ——Three Day
- An Easy Task
- centos7 部署ssserver
- C#项目代码风格要求(转)
- eclipse 新建servlet
- How to: Installshield做安装包时如何添加文件
- HDU 6047 Maximum Sequence(线段树)
- Java 线程同步组件 CountDownLatch 与 CyclicBarrier 原理分析
- python3中用HTMLTestRunner.py报ImportError: No module named &#39;StringIO&#39;解决办法
- mysql常见查询练习题
- 机器学习理论基础学习5--- PCA
- GlobeMapper生成Google瓦片
- 使用属性动画 — Property Animation