Java實(shí)現(xiàn)文件導(dǎo)入導(dǎo)出功能

記錄:文件導(dǎo)入導(dǎo)出功能。

前提準(zhǔn)備:
依賴包

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.6.3</version>
</dependency>

一、導(dǎo)入功能
導(dǎo)入模板表


image.png

上面的每一列的列名和實(shí)體類對應(yīng)

@Data
@TableName("book")
public class Book implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @TableField("book_name")
    private String bookName;
    @TableField("book_counts")
    private Integer bookCounts;
    private String detail;
    @TableField("db_source")
    private String dbSource;
}
/**
     * 導(dǎo)入功能
     */
    @RequestMapping("/import1")
    public void import1(MultipartFile file) {
        try {
            //從文件中讀取Excel為ExcelReader
            ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
            //轉(zhuǎn)換成對應(yīng)的實(shí)體類
            List<Book> books = reader.readAll(Book.class);
            //插入到數(shù)據(jù)庫
            books.forEach(book->bookMapper.insert(book));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

測試


image.png

測試結(jié)果


image.png

二、導(dǎo)出功能

/**
     * 導(dǎo)出功能
     * @param response
     */
    @RequestMapping("/export1")
    public void export(HttpServletResponse response) {
        //查詢所有導(dǎo)出數(shù)據(jù)
        List<Book> list=celService.list(new QueryWrapper<Book>());
        // 通過工具類創(chuàng)建writer,默認(rèn)創(chuàng)建xls格式
        ExcelWriter writer = ExcelUtil.getWriter();
        //自定義表格列名 給實(shí)體類對應(yīng)的字段取名字
        writer.addHeaderAlias("id", "編號");
        writer.addHeaderAlias("bookName", "書名");
        writer.addHeaderAlias("bookCounts", "數(shù)量");
        writer.addHeaderAlias("detail", "描述");
        writer.addHeaderAlias("dbSource", "來源");
        // 合并單元格后的標(biāo)題行,使用默認(rèn)標(biāo)題樣式
        writer.merge(4, "書籍表");
        // 一次性寫出內(nèi)容,使用默認(rèn)樣式,強(qiáng)制輸出標(biāo)題
        writer.write(list, true);
        //out為OutputStream,需要寫出到的目標(biāo)流
        //response為HttpServletResponse對象
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        //輸出表名編碼
        ServletOutputStream out = null;
        try {
            String name = new String("書籍表.xls"
                    .getBytes("UTF-8"), "ISO-8859-1");
            response.setHeader("Content-Disposition", "attachment;filename=" + name );
            out = response.getOutputStream();
            writer.flush(out, true);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 關(guān)閉writer,釋放內(nèi)存
            writer.close();
        }
        //此處記得關(guān)閉輸出Servlet流
        IoUtil.close(out);
    }

測試
http://localhost:8080/api/excel/export1

輸出結(jié)果


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容