參考來源
https://blog.csdn.net/fsdad/article/details/73200618
文件 Excel.cshtml
@{
ViewBag.Title = "Excel";
Layout = null;
}
<!DOCTYPE HTML>
@Styles.Render("~/easyui/css")
@Scripts.Render("~/easyui/js")
<script>
$(function () {
initPage();
btnImp();
btnTmpImport();
});
function initPage()
{
$('#fileImport').filebox({
buttonText: '請選擇文件',
buttonAlign: 'right'
})
$("#dgimp").datagrid({
rownumbers: true,
pagination:true,
pagePosition: 'bottom',
pageSize: 10,
pageList:[10,20,30],
columns: [[
{
field: 'ck',
checkbox: true
},
{
field: 'tcode',
title: '代碼'
},
{
field: 'tname',
title:'名稱'
}
]]
});
}
function btnTmpImport() {
$("#btnTmpImport").bind('click', function () {
debugger;
//var file = document.getElementById('fileImport').files[0]; //不知道為什麼用這種方式無法取到Uncaught TypeError: Cannot read property '0' of null
//console.log(file);
var file = $("input[name=fileImport]")[0].files[0];//瀏覽器F12找到對應的input name 貌似filebox由一個span和兩個input,具體看F12
var fileName = file.name;
var file_typename = fileName.substring(fileName.lastIndexOf('.'), fileName.length);
var formData = new FormData($("#importFileForm")[0]);
if (file_typename == ".xls" || file_typename==".xlsx") {
$.ajax({
@*url: "@Url.Content("~/sysinfo/excel/importExcel")",*@
url: "/sysinfo/excel/importExcel",
type: 'POST',
data: formData,
//async: false,
//cache: false,
contentType: false,
processData: false,//布尔值,规定通过请求发送的数据是否转换为查询字符串。默认是 true。如果不設置,請求非法
dataType:'json',
success: function (res, status, xhr) {
switch (res.state)
{
case 1:
$("#dgimp").datagrid({
data: res.data
});
break;
default:
break;
}
},
beforeSend: function () { },
error: function () { },
complete: function () { }
});
}
else {
$.messager.alert("提示","請選擇xls/xlsx格式的文件");
}
});
}
function btnImp()
{
}
</script>
<style>
* {
margin:0;
padding:0;
}
</style>
<div style="height:10px;"></div>
<form id="importFileForm" method="post" enctype="multipart/form-data">
<div>
<input id="fileImport" class="easyui-filebox" style="width:300px" name="fileImport">
<a id="btnTmpImport" class="easyui-linkbutton">臨時導入</a>
<a id="btnImport" class="easyui-linkbutton">正式導入</a>
</div>
</form>
<div style="height:10px;"></div>
<div id="dgimp" class="easyui-datagrid" style="margin-bottom:0;padding-bottom:0;width:1415px;height:560px;"></div>
文件:excelController.cs
using MyWeb.fileAttribute;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
//using NPOI.XSSF.UserModel;
namespace MyWeb.Areas.sysinfo.Controllers
{
//[CheckLogin(true)]
public class excelController : basecomm.baseController
{
// GET: sysinfo/excel
public ActionResult Index()
{
return View();
}
public ActionResult Excel()
{
return View();
}
public JsonResult importExcel()
{
bll.bllcomm.ResultObject resObj = new bll.bllcomm.ResultObject();
HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
if (files.Count > 0)
{
//获取文件集合中的第一个文件(每次只上传一个文件)
HttpPostedFile file = files[0];
string strUploadFileName = file.FileName;
string datetime = DateTime.Now.ToString("yyyyMMddHHmmssff");
string strNewFileName = datetime + "_" + strUploadFileName;
string strDir = Server.MapPath(string.Format("~/DirFiles/UploadFile"));
if (!Directory.Exists(strDir))
{
Directory.CreateDirectory(strDir);
}
string strSaveFileName = strDir + "\\" + strNewFileName;
file.SaveAs(strSaveFileName);
//NPOI上傳Excel
//FileStream inputStream = new FileStream(strSaveFileName, FileMode.Open);
//XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
//XSSFSheet sheet = workbook.GetSheetAt(0) as XSSFSheet;
//int rowNum = sheet.PhysicalNumberOfRows;
//for (int i = 1; i < rowNum; i++)
//{
// XSSFRow row = sheet.GetRow(i) as XSSFRow;
// XSSFCell cell0 = row.GetCell(0) as XSSFCell;
// XSSFCell cell1 = row.GetCell(1) as XSSFCell;
// XSSFCell cell2 = row.GetCell(2) as XSSFCell;
//}
}
return Json(resObj);
}
}
}