我有一个x行数的电子表格。每行都有一组静态数据。我想将这些数据转换为Java bean。
例如,如果我的行看起来像这样......
|名称|年龄|
|约翰| 21 |
我有一个像这样简单的Bean ......
public class Person{
private String name;
private int age;
//standard getters and setters
}
将电子表格转换为Java bean的最佳方法是什么?我目前正在使用hssf来读取和写入工作表,但是想不出从电子表格创建bean的简单方法。我知道我可以根据行数和列数调用所有getter / setter,但必须有更好的方式,任何想法?
答案 0 :(得分:1)
像这样:
public DataReader(File file) {
this.file = file;
Workbook workbook;
try {
workbook = Workbook.getWorkbook(file);
sheet = workbook.getSheet(0);
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void readData() throws ParseException {
int sheetLength = sheet.getRows();
System.out.println(sheetLength);
for (int i = 1; i < sheetLength; i++) {
String eventTitle = sheet.getRow(i)[22].getContents();
}
}
您可以使用
sheet.getRow()[].getContents();
每列。它将返回一个可以为Bean解析的String。
答案 1 :(得分:0)
这是一个名为jxls的开源库,它将电子表格数据转换为java bean http://jxls.sourceforge.net/reference/reader.html
但是,我认为将数据写入/读入XML然后使用jaxb将XML转换为java bean可能更容易。
答案 2 :(得分:0)
使用sep4j,您可以在使用HashMap定义标题后在一行中执行此操作。
Map<String, String> reverseHeaderMap = new HashMap<String,String>();
reverseHeaderMap.put("User Name", "name"); //"User Id" is a column header in the excel.
//"name" is the corresponding property of User class.
reverseHeaderMap.put("Age", "age");
List<User> users = ExcelUtils.parseIgnoringErrors(reverseHeaderMap, inputStream, Person.class);
您还需要在Person类中为age属性添加基于字符串的setter。
public void setAge(String ageString){
this.setAge(Integer.parseInt(ageString));
}