Java实现操作excel表格
最近老师布置了个任务,用Java对excel后缀名为xlsx的文件进行简单的增,删,改,查操作;虽说是个简单的程序,可作为刚接触的我来说还是有些磕磕碰碰。不过好在还是完成了,进行一个简单的总结。
首先导入了一个poi.jar网上有很多这个资源可以下载
XSSFSheetsheet=null;
XSSFWorkbookbook=null;
一:查 (查找本地指定位置的excel表格,在控制台输出)
publicvoidprint_excel(){
//获取excel表格的行数
intlastrownumber=sheet.getLastRowNum();
Stringret="";
//获取数据
for(a=0;a<lastrownumber;a++){
XSSFRowrow=sheet.getRow(a);
//获取excel表格的列数
intlastcellnum=row.getLastCellNum();
for(b=0;b<lastcellnum;b++){
XSSFCellcell=row.getCell(b);
//判断cell返回的类型并赋值给ret
ret=excel_operation.getExcelCellValue(cell);
System.out.print(ret+"");
}
System.out.println();
}
}
二:改(修改excel表格中某一单元格的内容)
publicvoidset_excelcell(inti,intj,Stringstr){
//获取行的信息
XSSFRowrow=sheet.getRow(i-1);
//获取列的信息
XSSFCellcell=row.getCell(j-1);
//获取被修改单元格的内容
Stringstring=excel_operation.getExcelCellValue(cell);
//修改单元格的内容为str
cell.setCellValue(str);
System.out.println("已将"+string+"改为"+str);
}
三:增(在excel表格中插入一行内容到指定位置)
publicvoidinsert(introwIndex,String[]objs){
if(rowIndex==0){
thrownewIllegalArgumentException("不能插在第0行,第0行是用来定义的!");
}
if(rowIndex>sheet.getLastRowNum()+1){
thrownewIllegalArgumentException("最多只能插入在最后一行的后面。");
}
intreferRowIndex=-1;//参考行的行号。
if(sheet.getPhysicalNumberOfRows()<=1){
referRowIndex=rowIndex-1;
}else{
referRowIndex=rowIndex-1;
if(rowIndex==sheet.getLastRowNum()+1){//是插入最后一行
//不做任何处理
}else{
//往下移动一位
sheet.shiftRows(rowIndex,sheet.getLastRowNum(),1,true,false);
}
}
RowtargetRow=sheet.createRow(rowIndex);
RowreferRow=sheet.getRow(referRowIndex);//参考行
CelltargetCell,referCell;
for(inti=0;i<objs.length;i++){
targetCell=targetRow.createCell(i);
referCell=referRow.getCell(i);
targetCell.setCellStyle(referCell.getCellStyle());
targetCell.setCellType(referCell.getCellType());
targetCell.setCellValue(objs[i]);//设置值
}
}
四:删(删除指定行的内容)
//删除一行数据(Excel表中,行是从0起算的)
publicvoiddelete(introwIndex){
//删除的是最后一行
if(rowIndex==sheet.getLastRowNum()){
sheet.removeRow(sheet.getRow(sheet.getLastRowNum()));
//删除的不是最后一行
}else{
sheet.shiftRows(rowIndex+1,sheet.getLastRowNum(),-1,true,false);
sheet.removeRow(sheet.getRow(sheet.getLastRowNum()+1));
}
}
五:判断返回类型 (因为excel表格中的内容不同,有字符型的,有整数型的等等,必须进行判断其类型才能进行输出)
privatestaticStringgetExcelCellValue(XSSFCellcell){
Stringret="";
try{
//当返回值的类型为空返回空格
if(cell==null){
ret="";
//当返回值的类型为字符串类型
}elseif(cell.getCellType()==XSSFCell.CELL_TYPE_STRING){
ret=cell.getStringCellValue();
//当返回值的类型为数值类型
}elseif(cell.getCellType()==XSSFCell.CELL_TYPE_NUMERIC){
ret=""+cell.getNumericCellValue();
//当返回值的类型为表达式类型
}elseif(cell.getCellType()==XSSFCell.CELL_TYPE_FORMULA){
ret=cell.getCellFormula();
//当返回值的类型为异常类型
}elseif(cell.getCellType()==XSSFCell.CELL_TYPE_ERROR){
ret=""+cell.getErrorCellValue();
//当返回值的类型为布尔类型
}elseif(cell.getCellType()==XSSFCell.CELL_TYPE_BOOLEAN){
ret=""+cell.getBooleanCellValue();
//当返回值的类型为空的时候
}elseif(cell.getCellType()==XSSFCell.CELL_TYPE_BLANK){
ret="";
}
}catch(Exceptionex){
ex.printStackTrace();
ret="";
}
returnret;
}