GithubHelp home page GithubHelp logo

fn-xlsx's Introduction

fn-xlxs

简单易用可扩展的Excel读写工具类 支持 java 1.8

1. Include

1. 下载代码

2. 打包

mvn clean install 

3. 添加本地依赖

<dependencies>
  <dependency>
    <groupId>com.github.fnwib</groupId>
    <artifactId>fn-xlsx</artifactId>
    <version>1.3.13</version>
  </dependency>
</dependencies> 

2. Excel to JavaBean

1. Excel 文档

TextOne integer LocalDte 1 LocalDte 2 Map A Map B
text1 1 2018-02-07 2018/1/07 m11 m21
text2 2 2018-02-08 2018/1/08 m12 m22
text3 3 2018-02-09 2018/1/09 m13 m23

2. 编写javaBean

@ToString //lombok
@Getter  //lombok
@Setter  //lombok
public class AutoMappingModel {
    @AutoMapping("Text One")    
    private String                text1;
  
    @AutoMapping("integer")
    private Integer               intNum;
  
    @AutoMapping(prefix = "LocalDate", value = "\\d+")
    private List<LocalDate>       localDateList;
  
    @AutoMapping(prefix = "Map", value = "[A-Z]")
    private Map<Integer, String> stringKeyMap;
  
}

3. 读取数据

File file = new File("file");
Workbook workbook = new XSSFWorkbook(file);

数据量比较大推荐使用 excel-streaming-reader

  • 简单使用
RowMapper<AutoMappingModel> parser = new RowMapperImpl<>(AutoMappingModel.class);
Workbook workbook = null;
boolean matched = false;
for (Sheet sheet : workbook) {
    for (Row row : sheet) {
        if (matched) {
            Optional<AutoMappingModel> convert = parser.convert(row);
            if (convert.isPresent()) {
                AutoMappingModel autoMappingModel = convert.get();
                System.out.println(autoMappingModel);
            }
        } else {
            boolean match = parser.match(row);
            if (match) {
                matched = true;
            }
        }
    }
}
  • 使用ExcelReader读取
RowMapper<AutoMappingModel> parser = new RowMapperImpl<>(AutoMappingModel.class);
ExcelReader<AutoMappingModel> reader = new ExcelReaderImpl<>(parser, workbook, 0);
while (reader.hasNext()){
    List<AutoMappingModel> models = reader.fetchData(500);
    System.out.println(models.size());
}

4 数据格式化处理配置

格式化表头 (表头都按String处理)

com.github.fnwib.plugin.ValueHandler trim = (s) -> s.trim();
LocalConfig localConfig = new LocalConfig();
localConfig.registerTitleValueHandlers(trim); // 注册表头字符串处理器
LineReader<AutoMappingModel> parser = new LineReaderForExcel<>(AutoMappingModel.class, localConfig);

格式化内容(只处理cell类型是文本)

全局配置
com.github.fnwib.plugin.ValueHandler trim = (s) -> s.trim(); 
LocalConfig localConfig = new LocalConfig();
localConfig.registerReadContentValueHandlers(trim);
LineReader<AutoMappingModel> parser = new LineReaderForExcel<>(AutoMappingModel.class, localConfig);
单个字段配置
1. 实现一个处理器(小写转大写)
public class ToUpperHandler implements ValueHandler {
    @Override
    public String convert(String param) {
        return param.toUpperCase();
    }
}
2.添加注解@ReadValueHandler({ToUpperHandler.class})到指定字段
@ToString //lombok
@Getter  //lombok
@Setter  //lombok
public class AutoMappingModel { 
    @ReadValueHandler({ToUpperHandler.class})
    @AutoMapping("Text One")    
    private String                text1;
  
    @AutoMapping("integer")
    private Integer               intNum;
  
    @AutoMapping(prefix = "LocalDate", value = "\\d+")
    private List<LocalDate>       localDateList;
  
    @AutoMapping(prefix = "Map", value = "[A-Z]")
    private Map<Integer, String> stringKeyMap;
  
}

3. JavaBean to Excel

通过对象生成

com.github.fnwib.write.ExcelWriterImplTest

通过map生成

com.github.fnwib.write.ExcelWriterByMapTest

fn-xlsx's People

Contributors

fnwib avatar

Stargazers

 avatar  avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.