帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:JAVA  PAR  解析  Excel  Annotate  ann  Sheet  Simplify  
Annotated Excel parsing library to simplify parsing excel sheet in JAVA

  • 源代码名称:excel-parser
  • 源代码网址:http://www.github.com/nvenky/excel-parser
  • excel-parser源代码文档
  • excel-parser源代码下载
  • Git URL:
    git://www.github.com/nvenky/excel-parser.git
  • Git Clone代码到本地:
    git clone http://www.github.com/nvenky/excel-parser
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/nvenky/excel-parser
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • Build Status

    Excel解析器示例

    Join the chat at https://gitter.im/nvenky/excel-parser

    HSSF - 可怕的电子表格格式- 不再是。 由于注释很少,可以在一行中进行excel解析。

    我们在当前项目中需要分析多个excel工作表并将信息存储到数据库中。 我希望大部分涉及excel工作表解析的项目都会做同样的事情。 我们构建了一个可扩展框架来解析多个工作表,并用注解填充JAVA对象。

    用法

    这里 jar 目前在 Sonatype Maven 存储库中可用。

    Maven:

    <dependency>
     <groupId>org.javafunk</groupId>
     <artifactId>excel-parser</artifactId>
     <version>1.0</version>
    </dependency>

    Gradle:

    compile 'org.javafunk:excel-parser:1.0'

    感谢 tobyclemson 将这个发布到 Maven 知识库。

    学生信息示例

    考虑我们有一个带有学生信息的excel表。

    Student Information

    解析这个excel表时,我们需要填充一个"节"对象和多个与某个部分相关的"学生"对象。 你可以看到学生信息在多行中可用,而节详细信息( 年份,节) 在column列中可用。

    步骤 1: 注释域类

    首先,我们将看到注释截面对象的步骤:

    @ExcelObject(parseType=ParseType.COLUMN, start=2, end=2)publicclassSection {
     @ExcelField(position=2)
     privateString year;
     @ExcelField(position=3)
     privateString section;
     @MappedExcelObjectprivateList<Student> students;
    }

    你可以在这个类中找到三个不同的注释。

    • ExcelObject: 这个注释告诉解析器解析类型( 行或列),要创建( 开始,结束)的对象数。 基于上述注释,应该将节值解析为 Columnwise,并在列2 ("b") 中找到信息。
    • ExcelField: 这里注释告诉解析器从第 3行的行 2和"节"信息中获取"年份"信息。
    • MappedExcelObject: 除了像"双"。"字符串"这样的简单数据类型,我们还可以在解析时尝试填充复杂的java对象。 在这种情况下,每个部分都有一个从excel表中解析的学生信息列表。 这里注释将帮助解析器识别这些字段。

    然后,对Student类进行注释:

    @ExcelObject(parseType=ParseType.ROW, start=6, end=8)publicclassStudent {
     @ExcelField(position=2)
     privateLong roleNumber;
     @ExcelField(position=3)
     privateString name;
     @ExcelField(position=4)
     privateDate dateOfBirth;
     @ExcelField(position=5)
     privateString fatherName;
     @ExcelField(position=6)
     privateString motherName;
     @ExcelField(position=7)
     privateString address;
     @ExcelField(position=8)
     privateDouble totalScore;
    }
    • ExcelObject: 如上面所示,这个注释告诉解析器将 6行解析为 8 ( 创建 3个学生对象)。 注意:可选字段"ZeroIfNull"( 如果设置为 true ),则默认情况下,如果数据不可以用,将为所有数字字段( 双。长。整数)。
    • ExcelField: Student类有 7个值被解析并存储在数据库中。 这在域类中表示为注释。
    • MappedExcelObject: Student类没有任何复杂对象,因此这里annoation不在这里域类中使用。

    步骤 2: 调用工作表分析器

    一旦注释完成,你就可以使用图纸和要填充的root 类调用解析器。

    //Get the sheet using POI API.String sheetName ="Sheet1";SheetParser parser =newSheetParser();InputStream inputStream = getClass().getClassLoader().getResourceAsStream("Student Profile.xls");Sheet sheet =newHSSFWorkbook(inputStream).getSheet(sheetName);//Invoke the Sheet parser.List entityList = parser.createEntity(sheet, sheetName, Section.class);

    解析器将根据注释填充所有字段。

    插件开发

    • 8
    • 运行"gradle思想"以设置项目
    • 安装Lombok插件
    • 启用"启用注释处理",因为这个项目使用Lombok库。 [ 编译器> 注释处理器> 启用注释处理: 选中的]

    贡献者

    • @nvenky
    • @cv
    • @tobyclemson


    文章标签:JAVA  PAR  Excel  ann  解析  Sheet  Simplify  Annotate  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语