按照TYPE的文件導入導出功能

来源:http://www.cnblogs.com/SunShiDa/archive/2016/01/09/5116283.html
-Advertisement-
Play Games

/*** 導入文件Action;*/private File excelFile;// 保存原始文件名private String excelFileFileName;// 保存原始文件名private String importResult;// 將Excel文件解析完畢後信息存放到這個User對...


/**

* 導入文件Action;
*/
private File excelFile;
// 保存原始文件名
private String excelFileFileName;
// 保存原始文件名
private String importResult;

// 將Excel文件解析完畢後信息存放到這個User對象中
private ExcelWorkSheet<TabUser> excelUserSheet;

/**
* 文件導入

* @return
*/
@Action(value = "importStuUser", results = { @Result(name = "success", location = "/view/student/queryStu/stuGrid.jsp") })
public String importStuUser() {
  try {
    Workbook workbook = createWorkBook(new FileInputStream(excelFile));

    if (roleType.equals("a")) {
      Sheet sheet = workbook.getSheetAt(0);

      excelUserSheet = new ExcelWorkSheet<TabUser>();

      Row firstRow = sheet.getRow(0);
      Iterator<Cell> iterator = firstRow.iterator();

      List<String> cellNames = new ArrayList<String>();
      while (iterator.hasNext()) {
        cellNames.add(iterator.next().getStringCellValue());
      }
      excelUserSheet.setColumns(cellNames);
      for (int i = 0; i < sheet.getLastRowNum(); i++) {
        Row row = sheet.getRow(i);
        TabRole tabRole = studentService.queryRoleByType(roleType);
        TabUser tabUser = new TabUser();
      if (row.getCell(0).getNumericCellValue() != 0) {
        tabUser.setUserId((int) row.getCell(0).getNumericCellValue());
      } else {
        throw new Exception();
      }
      tabUser.setUserCode(row.getCell(1).getStringCellValue());
      tabUser.setUserName(row.getCell(2).getStringCellValue());
      tabUser.setUserPassword(row.getCell(3).getStringCellValue());

      excelUserSheet.getData().add(tabUser);
      studentService.saveUser(tabUser);

      studentService.saveUserAndRole(tabUser, tabRole);
      }
    } else if (roleType.equals("t")) {
      Sheet sheet = workbook.getSheetAt(0);

      excelUserSheet = new ExcelWorkSheet<TabUser>();

      Row firstRow = sheet.getRow(0);
      Iterator<Cell> iterator = firstRow.iterator();

      List<String> cellNames = new ArrayList<String>();
    while (iterator.hasNext()) {
      cellNames.add(iterator.next().getStringCellValue());
    }
      excelUserSheet.setColumns(cellNames);
    for (int i = 0; i < sheet.getLastRowNum(); i++) {
      Row row = sheet.getRow(i);
      TabRole tabRole = studentService.queryRoleByType(roleType);
      TabUser tabUser = new TabUser();


      if (row.getCell(0).getNumericCellValue() != 0) {
        tabUser.setUserId((int) row.getCell(0).getNumericCellValue());
      } else {
        throw new Exception();
      }
        tabUser.setUserCode(row.getCell(1).getStringCellValue());
        tabUser.setUserName(row.getCell(2).getStringCellValue());
        tabUser.setUserPassword(row.getCell(3).getStringCellValue());

        excelUserSheet.getData().add(tabUser);
        studentService.saveUser(tabUser);
        studentService.saveUserAndRole(tabUser, tabRole);
      }
    } else if (roleType.equals("s")) {
      Sheet sheet = workbook.getSheetAt(0);

      excelUserSheet = new ExcelWorkSheet<TabUser>();

      Row firstRow = sheet.getRow(0);
      Iterator<Cell> iterator = firstRow.iterator();

      List<String> cellNames = new ArrayList<String>();
    while (iterator.hasNext()) {
      cellNames.add(iterator.next().getStringCellValue());
    }
    excelUserSheet.setColumns(cellNames);
    for (int i = 0; i < sheet.getLastRowNum(); i++) {
      Row row = sheet.getRow(i);
      TabRole tabRole = studentService.queryRoleByType(roleType);
      TabUser tabUser = new TabUser();


      if (row.getCell(0).getNumericCellValue() != 0) {
        tabUser.setUserId((int) row.getCell(0).getNumericCellValue());
      } else {
        throw new Exception();
      }
      tabUser.setUserCode(row.getCell(1).getStringCellValue());
      tabUser.setUserName(row.getCell(2).getStringCellValue());
      tabUser.setUserPassword(row.getCell(3).getStringCellValue());

      excelUserSheet.getData().add(tabUser);
      studentService.saveUser(tabUser);
      studentService.saveUserAndRole(tabUser, tabRole);
      }
    }
    importResult = "ok";
    versionService.updateVersionInformation("user");
    } catch (Exception e) {
      importResult = "fail";
      e.printStackTrace();
    }

   return SUCCESS;
}

private String format = "xls"; 
private String fileName = "導出數據.xls";

/** 導出數據 */
private void exportExcel(OutputStream os) {
  Workbook book = new HSSFWorkbook();
  Sheet sheet = book.createSheet("導出信息");
  Row row = sheet.createRow(0);
  row.createCell(0).setCellValue("userId");
  row.createCell(1).setCellValue("userCode");
  row.createCell(2).setCellValue("userName");
  row.createCell(3).setCellValue("userPassword");

  if (roleType.equals("a")) {
    reports = studentService.queryUserByType(roleType);

    for (int i = 0; i < reports.size(); i++) {
      TabUser tabUser = reports.get(i);
      row = sheet.createRow(i);
      row.createCell(0).setCellValue(tabUser.getUserId());
      row.createCell(1).setCellValue(tabUser.getUserCode());
      row.createCell(2).setCellValue(tabUser.getUserName());
      row.createCell(3).setCellValue(tabUser.getUserPassword());
    }

   } else if (roleType.equals("t")) {
   reports = studentService.queryUserByType(roleType);

   for (int i = 0; i < reports.size(); i++) {
    TabUser tabUser = reports.get(i);
    row = sheet.createRow(i);
    row.createCell(0).setCellValue(tabUser.getUserId());
    row.createCell(1).setCellValue(tabUser.getUserCode());
    row.createCell(2).setCellValue(tabUser.getUserName());
    row.createCell(3).setCellValue(tabUser.getUserPassword());
   }

  } else if (roleType.equals("s")) {
    reports = studentService.queryUserByType(roleType);

    for (int i = 0; i < reports.size(); i++) {
      TabUser tabUser = reports.get(i);
      row = sheet.createRow(i);
      row.createCell(0).setCellValue(tabUser.getUserId());
      row.createCell(1).setCellValue(tabUser.getUserCode());
      row.createCell(2).setCellValue(tabUser.getUserName());
      row.createCell(3).setCellValue(tabUser.getUserPassword());
    }
  }

  try {
    book.write(os);
  } catch (Exception ex) {
    ex.printStackTrace();
  }
}

@Action(value = "exportStuUser")
public String exportStuUser() throws Exception {

  setResponseHeader();
  try {
    exportExcel(response.getOutputStream());
    response.getOutputStream().flush();
    response.getOutputStream().close();
  } catch (IOException e) {
    e.printStackTrace();
  }
  return null;
}

/** 設置響應頭 */
public void setResponseHeader() {
  try {
    response.setContentType("application/msexcel;charset=UTF-8");
    response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(this.fileName, "UTF-8"));
    // 客戶端不緩存
    response.addHeader("Pargam", "no-cache");
    response.addHeader("Cache-Control", "no-cache");
  } catch (Exception ex) {
    ex.printStackTrace();
  }
}

/**
* 判斷導入文件格式;
*/
private Workbook createWorkBook(FileInputStream fileInputStream)throws Exception {
  if (excelFileFileName.toLowerCase().endsWith("xls")) {
    return new HSSFWorkbook(fileInputStream);
  }
  if (excelFileFileName.toLowerCase().endsWith("xlsx")) {
    return new XSSFWorkbook(fileInputStream);
  }
  return null;
}

 

js部分;

<div class="container">
  <div class="row">
    <div class="col-md-12">
      <%-- 記住這裡需要設置enctype="multipart/form-data"--%> 
      <s:form id = "importForm" action="/student/importStuUser.action" method="post" enctype="multipart/form-data"> 
        <input type="hidden" name="roleType" id="roleType" value="a"/>
          導入Excel文件:<s:file id="excelFile" name="excelFile"></s:file> <br/>
        <s:submit value="導入"></s:submit>
      </s:form>
      <s:form name="form1" action="/student/exportStuUser.action" method="post">
        <input type="hidden" name="format" value="xls" />
        <input type="hidden" name="roleType" id="roleTypeSecond" value="a"/>
        <s:submit name="sub" value="導出數據"></s:submit>
      </s:form>

      <div style="margin-left: 40%">
        <button class="ats" roleType="a">admin</button>&nbsp;&nbsp;&nbsp;&nbsp;

        <button class="ats" roleType="t">teacher</button>&nbsp;&nbsp;&nbsp;&nbsp;

        <button class="ats" roleType="s">student</button>
      </div>

    </div>

  </div>

</div>

<s:if test="importResult=='ok'">
  <script>
    alert("文件導入成功!");
  </script>
</s:if>
<s:elseif test="importResult=='fail'">
  <script>
    alert("導入文件存在錯誤或空,請核對後再導入!");
  </script>
</s:elseif>

<script type="text/javascript">
  var roleType = 'a';
  $(function(){

    $(".ats").click(function(){
      roleType = $(this).attr("roleType");
    $("#roleType").val(roleType);
    $("#roleTypeSecond").val(roleType);

    if(!$("#gridTable_ilcancel").hasClass('ui-state-disabled')){
      $("#gridTable_ilcancel").trigger("click");
    }
    $("#gridTable").jqGrid("clearGridData");
    $.ajax({
      type: 'POST',
      url: "${pageContext.request.contextPath }/student/queryStu.action",
      data: {
        type: 'json',
        roleType:roleType
      },
      success: function(data) {
        for ( var i = 0; i <= data.length; i++){
          $("#gridTable").jqGrid('addRowData', i + 1, data[i]);
        }

      }
    });

  });

});

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • print 2.7 和 3.0 的區別是 2.0 ===> print "hello world" 3.0 ===> print("hello world")1 print("hello world")變數賦值 臨時存儲數據name = '20'age = 43print(name,age...
  • 題目:Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = "aabcc",s2 = "dbbca",When s3 = "aadbbcbcac", r...
  • 這一系列文章目的不是講ruby,也不是講selenium-webdriver,而是通過一個登錄soso首頁的小例子講怎樣一步一步寫好自動化測試。目標是:面向對象編程,實現邏輯與數據分離。如果你覺得已經學會了selenium-webdriver這個工具,而且也可以自己寫一些小例子,但是似乎又是在雲里霧...
  • 一、簡介 在一些web、email、database等應用里,比如彩鈴,我們的應用在任何時候都要準備應對數目巨大的連接請求,同時,這些請求所要完成的任務卻又可能非常的簡單,即只占用很少的處理時間。這時,我們的應用有可能處於不停的創建線程並銷毀線程的狀態。雖說比起進程的創建,線程的創建時間已經大大縮短...
  • 題目:Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For example,Given n = 3, your program should return ...
  • NSDate#import int main(int argc, const char * argv[]) { @autoreleasepool { //通過date方法創建的時間對象,對象就保存了當前的時間; /* NSDate *now=[NSDate date]...
  • Object作為對象中的上帝,我們時刻關註著上帝中的行為。但是上帝之手有時候還不太好用,所以我們有時候要進行覆寫。public String toString(){ //code}public boolean equals(Object obj){ // obj 強轉 // 比較...
  • 1.準備工作 (1)PHP 版本5.6.17 下載地址 PHP官網 (2)Nginx 版本1.8.0 下載地址 Nginx官網 (3)MySQL 版本5.7.10MySQL官網2.php的安裝與配置 直接解壓下載好的php包,到D盤wnmp目錄(D:\wnmp),這裡把解壓出來的文件夾重命名...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...