国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用SpringMVC來簡單的操作Excel文件

felix0913 / 1716人閱讀

摘要:這里我用的創(chuàng)建的項(xiàng)目,創(chuàng)建過程就不做累述了,直接操刀,開始把數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)成一個(gè)文件正式開始寫這個(gè)創(chuàng)建一個(gè)類,這個(gè)類就是對進(jìn)行操作,主要兩個(gè)方法。

用SpringMVC生成一個(gè)Excel文件
通過Java來生成Excel文件或者導(dǎo)入一個(gè)Excel文件的數(shù)據(jù)都需要用到Apache的一個(gè)POI包,這里我就先把這個(gè)包提供出來。

    org.apache.poi
    poi-ooxml
    3.9

這里我用的SpringBoot創(chuàng)建的項(xiàng)目,創(chuàng)建過程就不做累述了,直接操刀,開始把數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)成一個(gè)Excel文件
正式開始寫這個(gè)Demo
1.創(chuàng)建一個(gè)ExcelUtil類,這個(gè)類就是對Excel進(jìn)行操作,主要兩個(gè)方法。

1-1.exportFile():把數(shù)據(jù)導(dǎo)出成一個(gè)Excel文件;
1-2.importFile():把指定文件的數(shù)據(jù)導(dǎo)入進(jìn)來;

users表結(jié)構(gòu)如下:

 id | username  | password  |
+----+-----------+-----------+
|  1 | yx12156ok | yx27787ok |
|  2 | yangxiang | 123456    |
|  3 | zhangsan  | 666666    |
|  4 | wangwu    | 999999    |
|  5 | xiaoming  | xiaoming
這里先貼出ExcelUtil類導(dǎo)入的實(shí)現(xiàn),下面再做詳細(xì)解釋:
public class ExcelUtil {
    
    private final String excel2003 = "xls";
    private final String excel2007 = "xlsx";
    
    private Workbook workbook;
    private Sheet sheet;
    private Row row;
    private Cell cell;
    private CellStyle style;
    
    private File file;
    
    //初始化表結(jié)構(gòu)和生成表頭
    public ExcelUtil(String[] titles,File file) {
        this.file = file;
        String fileName = this.file.getName();
        this.workbook = getWorkbook(fileName);
        if(workbook == null) return;
        this.sheet = this.workbook.createSheet();
        this.row = this.sheet.createRow(0);
        this.style = this.workbook.createCellStyle();
        this.style.setAlignment(CellStyle.ALIGN_CENTER);
        for(int i = 0 ; i < titles.length ; i ++) {
            cell = row.createCell(i);    //創(chuàng)建列
            cell.setCellValue(titles[i]);    //賦值
            cell.setCellStyle(style);    //樣式
        }
    }
    
    public void genertedExportUsersFile(List data) throws IOException {    
        //遍歷每一行數(shù)據(jù)
        for(int i = 0; i < data.size() ; i ++) {
            int j = 0;
            Users user = data.get(i);
            row = sheet.createRow(i+1);
            row.setRowStyle(style);
            row.createCell(j++).setCellValue(Optional.of(user.getId()).orElse(null));
            row.createCell(j++).setCellValue(Optional.of(user.getUsername()).orElse(null));
            row.createCell(j++).setCellValue(Optional.of(user.getPassword()).orElse(null));
        }
    }
    
    public void genertedExportStudentFile(List data) {
        //遍歷每一行數(shù)據(jù) 
        for(int i = 0,j = 0 ; i < data.size() ; i ++) {
            Student student = data.get(i);
            row = sheet.createRow(i+1);
            row.setRowStyle(style);
            row.createCell(j++).setCellValue(Optional.of(student.getId()).orElse(null));
            row.createCell(j++).setCellValue(Optional.of(student.getUsername()).orElse(null));
            row.createCell(j++).setCellValue(Optional.of(student.getPassword()).orElse(null));
            row.createCell(j++).setCellValue(Optional.of(student.getStuname()).orElse(null));
            row.createCell(j++).setCellValue(Optional.of(student.getStusex()).orElse(null));
}
}
    
public void write() throws IOException {
    //把數(shù)據(jù)寫入表格文件
    OutputStream out = new FileOutputStream(this.file);
    this.workbook.write(out);
    out.close();
}
private Workbook getWorkbook(String fileName) {
        //根據(jù)文件后綴名來獲取Excel文件是2003版的還是2007版的
        String type = checkFileType(fileName);
        //根據(jù)版本的不同實(shí)例不同的對象
        if(type.equals(this.excel2003))
            return new HSSFWorkbook();
        else if(type.equals(this.excel2007))
            return new XSSFWorkbook();
        return null;
    }

private String checkFileType(String fileName) {
    return fileName.substring(fileName.lastIndexOf(".")+1);
}
}
現(xiàn)在我就來講一講幾個(gè)方法的作用:
Constructor方法:對表結(jié)構(gòu)對象進(jìn)行初始化以及生產(chǎn)表頭;
genertedExportUsersFile方法:生成表的數(shù)據(jù),此時(shí)數(shù)據(jù)應(yīng)該還未真正寫入;
write方法:把生成的表寫入傳入的File類里,也就是創(chuàng)建的文件;
getWorkbook方法:獲取2003版本的或者2007版本的Excel對象;
checkFileType方法:獲取文件的后綴名。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71758.html

相關(guān)文章

  • SpringMvc】后臺(tái)系統(tǒng)超大報(bào)表下載超時(shí)處理

    摘要:四層負(fù)載均衡不會(huì)引起超時(shí)。動(dòng)態(tài)修改包的目標(biāo)地址,并轉(zhuǎn)發(fā)數(shù)據(jù)包使其到達(dá)不同的機(jī)器上來實(shí)現(xiàn)負(fù)載均衡的目的,因此節(jié)點(diǎn)不會(huì)引起超時(shí)。七層負(fù)載均衡等待上游響應(yīng)超時(shí)。例如使用多線程并發(fā)減少遠(yuǎn)程查詢的總體時(shí)間如需數(shù)據(jù)有序,可以使用方案。 B端業(yè)務(wù)經(jīng)常要提供下載報(bào)表的功能,一般的方法是先查詢出所有數(shù)據(jù),然后在內(nèi)存中組裝成報(bào)表(如XLS/XLSX格式)后統(tǒng)一輸出。但是如果生成報(bào)表需要查詢的數(shù)據(jù)量很大,遠(yuǎn)...

    kohoh_ 評(píng)論0 收藏0
  • springMVC流程學(xué)習(xí)和理解

    摘要:先用一個(gè)圖來表示基本流程圖這個(gè)網(wǎng)上很容易找到基本流程圖用戶發(fā)送請求到前端控制器前端控制器是的重要部分,位于中心,提供整個(gè)框架訪問點(diǎn),起到交換的作用,而且與容器集成。在配置這個(gè)監(jiān)聽器,啟動(dòng)容器時(shí),就會(huì)默認(rèn)執(zhí)行它實(shí)現(xiàn)的方法。 先用一個(gè)圖來表示基本流程圖這個(gè)網(wǎng)上很容易找到 基本流程圖 showImg(https://segmentfault.com/img/bVbfDiV?w=1340&h...

    didikee 評(píng)論0 收藏0
  • Java Excel導(dǎo)入導(dǎo)出,基于XML和Easy-excel使

    摘要:我想能不能像配置文件一樣可配置的導(dǎo)入導(dǎo)出,那樣使用起來就方便許多。配置和使用下面是員工信息模型。支持多種映射,使用英文逗號(hào)進(jìn)行分割。導(dǎo)入時(shí)它會(huì)以分割前面的作為導(dǎo)入時(shí)使用的值,后面的作為導(dǎo)出時(shí)使用的值后面值進(jìn)行逆推導(dǎo)出時(shí)同理。 1.前言 在工作時(shí),遇到過這樣的需求,需要靈活的對工單進(jìn)行導(dǎo)入或?qū)С觯郧白约阂沧鲞^,但使用不靈活繁瑣。我想能不能像配置文件一樣可配置的導(dǎo)入導(dǎo)出,那樣使用起來就方...

    13651657101 評(píng)論0 收藏0
  • SpringMVC學(xué)習(xí)筆記

    摘要:是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。協(xié)議,是一個(gè)無狀態(tài)協(xié)議,即所有的狀態(tài)都保存在服務(wù)器端。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化。具體說,就是協(xié)議里面,四個(gè)表示操作方式的動(dòng)詞。 一、SpringMVC概述 Spring為展現(xiàn)層提供的基于MVC設(shè)計(jì)理念的優(yōu)秀的Web框架,是目前最主流的MVC框架之一 Spring3.0之后全面超越Struts2,成為最優(yōu)秀的MVC框架 S...

    roundstones 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<