excel,csv文件导入导出解决方案 FrameworkPoi

码农软件 · 软件分类 · 常用工具包 · 2019-08-12 15:11:44

软件介绍

poi框架 framework-poi

> 简单、好用且轻量级的海量excel,csv文件导入导出解决方案。解决火狐浏览器中文编码问题。

> 注:excel的合并功能及复杂功能,使用代码实现比较复杂,框架只提供单行的导入导出。

如何使用?

引入Maven依赖或下载jar包

    <dependency>
        <groupId>com.github.fartherp</groupId>
        <artifactId>framework-poi</artifactId>
        <version>3.0.4</version>
    </dependency>

 

CSV常用例子:

    CSVRead.read(CSVReadTest.class.getResourceAsStream("/a.csv"), new CSVReadDeal<CsvReadDto>() {        
        // 单条数据处理(每一行对应一个javabean)
        public CsvReadDto dealBean(String[] arr) {
            CsvReadDto dto = new CsvReadDto();
            dto.setId(Long.valueOf(arr[0]));
            dto.setName(arr[1]);
            dto.setAge(Integer.valueOf(arr[2]));            
            return dto;
        }        
        // 批量数据处理(可以批量入库)
        public void dealBatchBean(List<CsvReadDto> list) {
            Assert.assertEquals("name1";, list.get(0).getName());
            Assert.assertEquals("name2", list.get(1).getName());
            Assert.assertEquals("name3", list.get(2).getName());
        }        
        // 批量加载多少数据,统一处理(默认1000)
        public int getBatchCount() {            
            return super.getBatchCount();
        }        
        // 从第几行开始加载(默认跳过第一行)
        public int skipLine() {            
            return super.skipLine();
        }
    });

 

2.CSV文件导出:

    String filename = "TEST";
    String[] title = SheetsTitlesEnum.USER_LOGIN_LOG.getTitle();
    List<String[]> bodyList = new ArrayList<>();
    CsvUtil.writeCsvFile(filename, title, bodyList);

 

3.浏览器下载CSV文件:

    HttpServletResponse response = null;
    HttpServletRequest request = null;
    String filename = "TEST";
    String[] title = SheetsTitlesEnum.USER_LOGIN_LOG.getTitle();
    List<String[]> bodyList = new ArrayList<>();
    CsvUtil.writeCsvFile(response, request, filename, title, bodyList);

 

Excel常用例子:

1.Excel文件导入:

    ExcelRead.read(ExcelReadTest.class.getResourceAsStream("/a.xls"), new ExcelReadDeal<ExcelReadDto>() {        
        // 单条数据处理(每一行对应一个javabean)
        public ExcelReadDto dealBean(Row row) {
            ExcelReadDto dto = new ExcelReadDto();
            dto.setId(new BigDecimal(row.getCell(0).toString()).longValue());
            dto.setName(row.getCell(1).toString());
            dto.setAge(Integer.valueOf(row.getCell(2).toString()));            
            return dto;
        }        
        // 批量数据处理(可以批量入库)
        public void dealBatchBean(List<ExcelReadDto> list) {
            Assert.assertEquals("name1", list.get(0).getName());
            Assert.assertEquals("name2", list.get(1).getName());
            Assert.assertEquals("name3", list.get(2).getName());
        }        
        // 批量加载多少数据,统一处理(默认1000)
        public int getBatchCount() {            
            return super.getBatchCount();
        }        
        // 从第几行开始加载(默认跳过第一行)
        public int skipLine() {            
            return super.skipLine();
        }
    });

 

2.Excel文件导出:

    String[] title = new String [6];
    title[0] = "登录时间";
    title[1] = "用户名";
    title[2] = "访问端";
    title[3] = "版本系统";
    title[4] = "登录IP";
    title[5] = "状态";
    String fileName = "D:\\style1.xls";
    FileExcelWrite.<ExcelDto>build(title, fileName)
        .setLargeDataMode(false)
        .deal(obj -> {
            String[] result = new String[6];
            result[0] = obj.getTime();
            result[1] = obj.getName();
            result[2] = obj.getClient();
            result[3] = obj.getVersion();
            result[4] = obj.getIp();
            result[5] = obj.getStatus() + "";        
            return result;
        })
        .list(ExcelWriteStyleTest.getList())// 默认情况下导出数据达到excel最大行,自动切换sheet,(xlsx=1048576,xls=65536)
        .list(ExcelWriteStyleTest.getList1())
        .write();

 

3.Excel文件导出(风格,可以自定义风格):

    Map<String, Object> map = new HashMap<>();
    map.put("quoteCurrency", "ETH");
    map.put("symbol", "USDT_ETH");
    map.put("startTime", "2019-01-09 00:00:00");
    map.put("endTime", "2019-01-09 12:00:00");
    String fileName = "D:\\styleInputStream.xls";
    FileExcelWrite.<ExcelDto>build(this.getClass().getResourceAsStream("/c.xls"), fileName)
        .additional(map)
        .deal(new WriteDeal<ExcelDto>() {        
            public String[] dealBean(ExcelDto obj) {
                String[] result = new String[3];
                result[0] = obj.getId() + "";
                result[1] = obj.getName();
                result[2] = obj.getAge() + "";            
                return result;
            }        
            public int skipLine() {            
                return 4;
            }
        })
        .list(getList())
        .write();

 

4.浏览器下载Excel文件:

    String[] title = new String [6];
    title[0] = "登录时间";
    title[1] = "用户名";
    title[2] = "访问端";
    title[3] = "版本系统";
    title[4] = "登录IP";
    title[5] = "状态";
    String fileName = "D:\\style1.xls";
    HttpServletResponseExcelWrite.<ExcelDto>build(title, fileName, request, response)
        .setLargeDataMode(false)
        .deal(obj -> {
            String[] result = new String[6];
            result[0] = obj.getTime();
            result[1] = obj.getName();
            result[2] = obj.getClient();
            result[3] = obj.getVersion();
            result[4] = obj.getIp();
            result[5] = obj.getStatus() + "";        
            return result;
        })
        .list(ExcelWriteStyleTest.getList())// 默认情况下导出数据达到excel最大行,自动切换sheet,(xlsx=1048576,xls=65536)
        .list(ExcelWriteStyleTest.getList1())
        .write();

本文地址:https://codercto.com/soft/d/12209.html

Text Processing in Python

Text Processing in Python

David Mertz / Addison-Wesley Professional / 2003-6-12 / USD 54.99

Text Processing in Python describes techniques for manipulation of text using the Python programming language. At the broadest level, text processing is simply taking textual information and doing som......一起来看看 《Text Processing in Python》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器