如何使用ApachePOI将动态excel文件(列数可以超过)写入java对象
我知道我们可以创建一个模型类,它的每个实例变量将绑定到每个excel列,如下所示如何使用ApachePOI将动态excel文件(列数可以超过)写入java对象,java,excel,automated-tests,apache-poi,Java,Excel,Automated Tests,Apache Poi,我知道我们可以创建一个模型类,它的每个实例变量将绑定到每个excel列,如下所示 class emp{ String name; String empId; //getter and setter method of each } excel文件: 名称| empid abc | 123 bcd | 3232 xyz | ee32 当excel中的列数动态增加时,如何处理这种情况我将使用一种表模型来实现这一点。类似于的模型 显示此方法蓝图的完整示例: 导入java.io
class emp{
String name;
String empId;
//getter and setter method of each
}
excel文件:
名称| empid
abc | 123
bcd | 3232
xyz | ee32
当excel中的列数动态增加时,如何处理这种情况我将使用一种表模型来实现这一点。类似于的模型 显示此方法蓝图的完整示例: 导入java.io.*; 导入org.apache.poi.ss.usermodel.*; 公共类模型{ 公共静态无效主字符串[]args引发异常{ 工作簿工作簿=WorkbookFactory.CreateNewFileInputStreamExcelFile.xlsx; 工作表=工作簿.getSheetAt0; ExcelTableModel ExcelTableModel=新的ExcelTableModelsheet; System.out.PrintLnCelTableModel.getColumnCount; System.out.PrintLnCelTableModel.getRowCount; System.out.PrintLnCelTableModel.getColumnNames; System.out.PrintLnCelTableModel.getData; System.out.PrintLnCelTableModel.getColumnName1; System.out.PrintLnCelTableModel.getValueAt2,1; 工作簿.close; } } 导入java.util.Vector; 导入org.apache.poi.ss.usermodel.Cell; 导入org.apache.poi.ss.usermodel.DataFormatter; 导入org.apache.poi.ss.usermodel.Row; 导入org.apache.poi.ss.usermodel.Sheet; 公共类模型{ 专用向量列名称; 专用矢量数据; 专用数据格式化程序DataFormatter=新数据格式化程序; 公共表格模型表{ this.columnNames=新向量; this.data=新向量; int firstRow=sheet.getFirstRowNum; 行colNamesRow=sheet.getRowfirstRow; int firstCol=colNamesRow.getFirstCellNum; int lastColP1=colNamesRow.getLastCellNum; 对于int c= FirStCl;C < LASTCOLP1;C++ > Cell Cell=colNamesRow.getCellc; String columnName=dataFormatter.formatCellValuecell; this.columnNames.addcolumnName; } int lastRow=sheet.getLastRowNum; 对于int r=firstRow+1;r
如您所见,表格将从使用的范围中获取,使用的范围的第一行将作为列名获取。使用Map而不是Emp OBJECT我认为它不起作用。我正在创建列表。但问题是,若excel列发生更改,则需要更改代码。你可以发布LogicThank@Axel的代码快照吗。。。这绝对有道理。@Polywhill先生:请解释编辑我的代码的原因。我没有编辑代码,我只是将文章作为一个整体格式化。将每个类看作一个单独的代码块可以减少在代码中滚动查看新类何时启动的麻烦。我还调整了缩进以提高可读性。@Polywhill先生:即使我通过回滚您的编辑来表明我不同意这一点,也有必要再做一次吗?非常感谢校长先生。