Ajax上傳Excel文件,后台處理(.net MVC)


展示:

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方法得

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM