对于数据,通常执行增删查改四种基本操作,今天总结一下增加和修改。
增
开始用XSSFWorkbook类、XSSFSheet类等,发现写入数据后文件就损坏了,经过Google后发现直接用Workbook、Sheet、Row等类可以实现数据插入。
所以说,POI大坑!
try {
// TODO add your handling code here:
String fileName="C:\\Users\\lance\\Desktop\\data.xlsx";
File file = new File(fileName);
Workbook workbook = new XSSFWorkbook(new FileInputStream(file));
Sheet sheet = workbook.getSheetAt(0);
int x=sheet.getLastRowNum()+1;
Row newRow = sheet.createRow(x);
Cell newCell = newRow.createCell(0);
newCell.setCellValue(t2.getText());
newCell = newRow.createCell(1);
newCell.setCellValue(t3.getText());
newCell = newRow.createCell(2);
newCell.setCellValue(t4.getText());
newCell = newRow.createCell(3);
newCell.setCellValue(t5.getText());
workbook.write(new FileOutputStream(fileName));
workbook.close();
Object[] options ={ "OK" }; //自定义按钮上的文字
JOptionPane.showOptionDialog(null,"操作成功!", "success",JOptionPane.YES_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
改
这个比较容易,跟增加数据一样,直接对当前的Cell对象使用setCellValue
方法即可。
try {
// TODO add your handling code here:
String fileName="C:\\Users\\lance\\Desktop\\data.xlsx";
File file = new File(fileName);
Workbook workbook = new XSSFWorkbook(new FileInputStream(file));
Sheet SPJ = workbook.getSheetAt(1);
for(Row row:SPJ)
{
if(row.getCell(0).getStringCellValue().equals(t11.getText()))
{
row.getCell(3).setCellType(CellType.STRING);
int x=Integer.parseInt(row.getCell(3).getStringCellValue());
row.getCell(3).setCellValue(new String((int)(1.1*x)+""));
}
}
workbook.write(new FileOutputStream(fileName));
workbook.close();
Object[] options ={ "OK" }; //自定义按钮上的文字
JOptionPane.showOptionDialog(null,"修改成功!", "success",JOptionPane.YES_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}