展示:
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方法得