Rumah Java JavaAsas JAVA如何导出EXCEL表格

JAVA如何导出EXCEL表格

Sep 27, 2020 pm 03:10 PM
java

JAVA导出EXCEL表格的方法:首先用HSSFWorkbook打开或者创建“Excel文件对象”;然后用Sheet对象返回行对象,用行对象得到Cell对象;接着对Cell对象读写;最后将生成的文件放入响应的前端页面。

JAVA如何导出EXCEL表格

JAVA导出EXCEL表格的方法:

基本操作步骤:

首先,我们应该要知道的是,一个Excel文件对应一个workbook,一个workbook中有多个sheet组成,一个sheet是由多个行(row)和列(cell)组成。

那么我们用poi要导出一个Excel表格的正确顺序应该是:

1、用HSSFWorkbook打开或者创建“Excel文件对象”

2、用HSSFWorkbook对象返回或者创建Sheet对象

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

4、对Cell对象读写。

5、将生成的HSSFWorkbook放入HttpServletResponse中响应到前端页面

导出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>
$(&#39;#js-export&#39;).click(function(){
            window.location.href="/report/exportBooksTable.do;
});

相关学习推荐:java基础

Atas ialah kandungan terperinci JAVA如何导出EXCEL表格. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1596
276
Anda tidak menggunakan paparan yang dilampirkan pada GPU NVIDIA [tetap] Anda tidak menggunakan paparan yang dilampirkan pada GPU NVIDIA [tetap] Aug 19, 2025 am 12:12 AM

Ifyousee"YouarenotusingadisplayattachedtoanNVIDIAGPU,"ensureyourmonitorisconnectedtotheNVIDIAGPUport,configuredisplaysettingsinNVIDIAControlPanel,updatedriversusingDDUandcleaninstall,andsettheprimaryGPUtodiscreteinBIOS/UEFI.Restartaftereach

Apakah kebuntuan di Java dan bagaimana anda boleh menghalangnya? Apakah kebuntuan di Java dan bagaimana anda boleh menghalangnya? Aug 23, 2025 pm 12:55 PM

Adeadlockinjaoccurswhentwoormorethreadsareblockedforever, eachwaitingforaresourceHeldByTheother, biasanyaduetoculularwaitcausedbyinconsistentlockordering;

Meneroka corak reka bentuk Java biasa dengan contoh Meneroka corak reka bentuk Java biasa dengan contoh Aug 17, 2025 am 11:54 AM

Corak reka bentuk Java adalah penyelesaian yang boleh diguna semula untuk masalah reka bentuk perisian biasa. 1. Mod Singleton memastikan bahawa hanya ada satu contoh kelas, yang sesuai untuk pengumpulan sambungan atau konfigurasi sambungan pangkalan data; 2. Mod kilang menghancurkan penciptaan objek, dan objek seperti kaedah pembayaran dihasilkan melalui kelas kilang; 3. Mod pemerhati secara automatik memberitahu objek yang bergantung, sesuai untuk sistem yang didorong oleh peristiwa seperti kemas kini cuaca; 4. Algoritma penukaran dinamik mod strategi seperti strategi penyortiran meningkatkan fleksibiliti kod. Corak ini meningkatkan pemeliharaan kod dan skalabiliti tetapi harus mengelakkan terlalu banyak.

Bagaimana cara menggunakan pilihan di Java? Bagaimana cara menggunakan pilihan di Java? Aug 22, 2025 am 10:27 AM

UseOptional.empty (), optional.of (), andOptional.ofnullable () tOcreateOptionalInStancesDependingOnwhethetheValueisabsent, non-null, orpossiblynull.2.CheckForvalUessafelySpresent () orprefeAdoShoDoD.

Penapis cat minyak ps berbentuk kelip -kelip Penapis cat minyak ps berbentuk kelip -kelip Aug 18, 2025 am 01:25 AM

TheOilPaintfilterinPhotoshopisgreyedoutusuallybecauseofincompatibledocumentmodeorlayertype;ensureyou'reusingPhotoshopCS6orlaterinthefulldesktopversion,confirmtheimageisin8-bitperchannelandRGBcolormodebycheckingImage>Mode,andmakesureapixel-basedlay

Membina aplikasi java awan-asli dengan micronaut Membina aplikasi java awan-asli dengan micronaut Aug 20, 2025 am 01:53 AM

Micronautisidealforbuildingcloud-nativaapplicationsduetoitslowmemoryfootprint, fastStartuptimes, dan kompilasi-timedependencyinjection, makeitsuperiortotraditionalframeworkslikespringbootformicroservices, dan

Tetap: Windows menunjukkan 'Keistimewaan yang diperlukan tidak dipegang oleh pelanggan' Tetap: Windows menunjukkan 'Keistimewaan yang diperlukan tidak dipegang oleh pelanggan' Aug 20, 2025 pm 12:02 PM

RuntheapplicationorcommandasAdministratorbyright-clickingandselecting"Runasadministrator"toensureelevatedprivilegesaregranted.2.CheckUserAccountControl(UAC)settingsbysearchingforUACintheStartmenuandsettingtheslidertothedefaultlevel(secondfr

Senibina Kriptografi Java (JCA) untuk pengekodan selamat Senibina Kriptografi Java (JCA) untuk pengekodan selamat Aug 23, 2025 pm 01:20 PM

Memahami komponen teras JCA seperti MessageDigest, Cipher, KeyGenerator, SecureRandom, Signature, Keystore, dan lain -lain, yang melaksanakan algoritma melalui mekanisme penyedia; 2. Gunakan algoritma dan parameter yang kuat seperti SHA-256/SHA-512, AES (Kunci 256-bit, mod GCM), RSA (2048-bit atau ke atas) dan SecureRandom; 3. Elakkan kunci berkod keras, gunakan KeyStore untuk menguruskan kunci, dan menjana kunci melalui kata laluan yang diperoleh dengan selamat seperti PBKDF2; 4. Lumpuhkan mod ECB, mengamalkan mod penyulitan pengesahan seperti GCM, menggunakan IV rawak yang unik untuk setiap penyulitan, dan yang sensitif yang jelas pada waktunya

See all articles