展示:
Excel示例數據:
頁面顯示數據(這里是因為需求沒有顯示標題):
Js里數據顯示 (這里是使用0,1,2這些數字當 key) :
前台頁面:
<input type="file" onchange="DRfile()" id="DRExcel" name="DRExcel" />
前台Js:
<script>
function DRfile() {
var formData = new FormData(); //創建一個formData對象實例
formData.append("excelFile", $('#DRExcel')[0].files[0]); //通過append方法添加數據
//ajax請求后台地址
$.ajax({
url: "這里寫后台得鏈接地址",
dataType: 'json',
type: 'POST',
async: false,
data: formData,
processData: false, // 使數據不做處理
contentType: false, // 不要設置Content-Type請求頭
success: function (data) {
var str = '<table style="border:0.1px dashed #000000;">';
for (var temp in data) {
str = str + '<tr>';
for (var tem in data[temp]) {
str = str + '<td style="width:120px;height:10px;text-align:center;border:0.1px dashed #000000;">';
str = str + data[temp][tem];
str = str + '</td>';
}
str = str + '</tr>';
}
str = str + '</table>';
$('#importDialog').dialog({ //這里使用EasyUI
title: '導入文件',
width: 1200,
height: 500,
closed: false,
cache: false,
content: str,
modal: true,
buttons: [{
text: '導入',
handler: function () {
//這里做顯示數據頁面得操作
}
}, {
text: '關閉',
handler: function () {
//這里做關閉操作
}
}]
});
}
});
}
</script>
后台方法:
public string ExcelToolFormFile()
{
System.Web.HttpFileCollection _file = System.Web.HttpContext.Current.Request.Files;
Stream stream = _file[0].InputStream;//獲取文件流
IWorkbook workbook = null;
if (_file[0].FileName.Split('.')[1] == "xls")
{
workbook = new HSSFWorkbook(stream);//從流內容創建Workbook對象
}
else
{
workbook = new XSSFWorkbook(stream);
}
ISheet sheet = workbook.GetSheetAt(0);//獲取第一個工作表
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大數值
ArrayList arrayList = new ArrayList();
for (int j = 0; j < sheet.LastRowNum + 1; j++)
{
Dictionary<string, object> dictionary = new Dictionary<string, object>();
//得到當前的行
IRow row = sheet.GetRow(j);
if (row != null)
{
//遍歷每行所有的單元格
//注意這里不用加1,這里得到的最后一個單元格的索引默認是從1開始的
for (int k = 0; k < row.LastCellNum; k++)
{
//得到當前單元格
dictionary.Add(k.ToString(), row.GetCell(k) == null ? "" : row.GetCell(k).ToString());
}
if (!(dictionary["0"].ToString() == "" && dictionary["1"].ToString() == ""))
{
arrayList.Add(dictionary);
}
}
}
return javaScriptSerializer.Serialize(arrayList);
}
這個操作里需要注意得幾個地方:
1,
HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,擴展名是.xls
XSSFWorkbook:是操作Excel2007的版本,擴展名是.xlsx
2,在請求成功或者是失敗得時候,都要把input里得值置空,否者當沒有刷新頁面再次點擊input得時候,是不會調取onchange方法得