中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JAVA中怎么導出EXCEL表格

發布時間:2021-06-11 15:16:04 來源:億速云 閱讀:135 作者:Leah 欄目:編程語言

JAVA中怎么導出EXCEL表格?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

如果是用maven的可自行到maven中央倉庫搜索poi然后選擇對應的版本即可,也可以直接將下面代碼復制到pom.xml。

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.6</version>
</dependency>

小提示:用maven引入依賴jar包的可能會遇到包引用不到的bug,但是maven依賴確實已經引入了,而且沒有任何報錯,但是只要一引用 org.apache.poi.hssf.usermodel下面的類

就會報錯,報錯內容為:Caused by: java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook。

3. Jakarta POI HSSF API組件:

HSSF(用于操作Excel的組件)提供給用戶使用的對象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel對象,樣式和格式,有以下幾種常用的對象:

常用組件:

  • HSSFWorkbook excel的文檔對象

  • HSSFSheet excel的表單

  • HSSFRow excel的行

  • HSSFCell excel的格子單元

  • HSSFFont excel字體

樣式:

HSSFCellStyle cell樣式

4.基本操作步驟:

首先,我們應該要知道的是,一個Excel文件對應一個workbook,一個workbook中有多個sheet組成,一個sheet是由多個行(row)和列(cell)組成。那么我們用poi要導出一個Excel表格

的正確順序應該是:

1、用HSSFWorkbook打開或者創建“Excel文件對象”

2、用HSSFWorkbook對象返回或者創建Sheet對象

3、用Sheet對象返回行對象,用行對象得到Cell對象

4、對Cell對象讀寫。

5、將生成的HSSFWorkbook放入HttpServletResponse中響應到前端頁面

5. 導出Excel應用實例:

工具類代碼:

package com.yq.util;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExcelUtil {

  /**
   * 導出Excel
   * @param sheetName sheet名稱
   * @param title 標題
   * @param values 內容
   * @param wb HSSFWorkbook對象
   * @return
   */
  public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){

    // 第一步,創建一個HSSFWorkbook,對應一個Excel文件
    if(wb == null){
      wb = new HSSFWorkbook();
    }

    // 第二步,在workbook中添加一個sheet,對應Excel文件中的sheet
    HSSFSheet sheet = wb.createSheet(sheetName);

    // 第三步,在sheet中添加表頭第0行,注意老版本poi對Excel的行數列數有限制
    HSSFRow row = sheet.createRow(0);

    // 第四步,創建單元格,并設置值表頭 設置表頭居中
    HSSFCellStyle style = wb.createCellStyle();
    style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 創建一個居中格式

    //聲明列對象
    HSSFCell cell = null;

    //創建標題
    for(int i=0;i<title.length;i++){
      cell = row.createCell(i);
      cell.setCellValue(title[i]);
      cell.setCellStyle(style);
    }

    //創建內容
    for(int i=0;i<values.length;i++){
      row = sheet.createRow(i + 1);
      for(int j=0;j<values[i].length;j++){
        //將內容按順序賦給對應的列對象
        row.createCell(j).setCellValue(values[i][j]);
      }
    }
    return wb;
  }
}

控制器代碼:

@Controller
@RequestMapping(value = "/report")
public class ReportFormController extends BaseController {

  @Resource(name = "reportService")
  private ReportManager reportService;

  /**
   * 導出報表
   * @return
   */
  @RequestMapping(value = "/export")
  @ResponseBody
  public void export(HttpServletRequest request,HttpServletResponse response) throws Exception {
      //獲取數據
      List<PageData> list = reportService.bookList(page);

      //excel標題
      String[] title = {"名稱","性別","年齡","學校","班級"};

      //excel文件名
      String fileName = "學生信息表"+System.currentTimeMillis()+".xls";

      //sheet名
      String sheetName = "學生信息表";

      for (int i = 0; i < list.size(); i++) {
      content[i] = new String[title.length];
      PageData obj = list.get(i);
      content[i][0] = obj.get("stuName").tostring();
      content[i][1] = obj.get("stuSex").tostring();
      content[i][2] = obj.get("stuAge").tostring();
      content[i][3] = obj.get("stuSchoolName").tostring();
      content[i][4] = obj.get("stuClassName").tostring();
      }

      //創建HSSFWorkbook 
      HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);

      //響應到客戶端
      try {
        this.setResponseHeader(response, fileName);
        OutputStream os = response.getOutputStream();
        wb.write(os);
        os.flush();
        os.close();
       } catch (Exception e) {
        e.printStackTrace();
       }
  }

  //發送響應流方法
  public void setResponseHeader(HttpServletResponse response, String fileName) {
    try {
      try {
        fileName = new String(fileName.getBytes(),"ISO8859-1");
      } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
      response.setContentType("application/octet-stream;charset=ISO8859-1");
      response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
      response.addHeader("Pargam", "no-cache");
      response.addHeader("Cache-Control", "no-cache");
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }}

前端頁面代碼:

<button id="js-export" type="button" class="btn btn-primary">導出Excel</button>
$('#js-export').click(function(){
      window.location.href="/report/exportBooksTable.do;
});

看完上述內容,你們掌握JAVA中怎么導出EXCEL表格的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新昌县| 沛县| 夹江县| 凌云县| 都兰县| 余干县| 建瓯市| 郴州市| 合肥市| 府谷县| 公安县| 海原县| 婺源县| 改则县| 旌德县| 永胜县| 库伦旗| 石嘴山市| 阿坝县| 绥中县| 西城区| 巴中市| 涿鹿县| 保靖县| 元朗区| 安平县| 金山区| 田阳县| 绥宁县| 水富县| 新丰县| 仁化县| 玉环县| 贡山| 临洮县| 米脂县| 独山县| 青神县| 金华市| 灵寿县| 林芝县|