一。读取excel数据并存到二维数组之中(两列的数据):
public static String[][] read(String path) throws IOException{
// 构造 XSSFWorkbook 对象,strPath 传入文件路径
XSSFWorkbook xwb = new XSSFWorkbook(path);
// 读取第一章表格内容
XSSFSheet sheet = xwb.getSheetAt(0);
// 定义 row、cell
XSSFRow row;
String cell;
String xy[][] = new String[sheet.getPhysicalNumberOfRows()][sheet.getRow(1).getPhysicalNumberOfCells()];
//System.out.println("----行数-----"+sheet.getPhysicalNumberOfRows());
//System.out.println("-----列数----"+sheet.getRow(1).getPhysicalNumberOfCells());
// 循环输出表格中的内容
for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
//System.out.println("------i值-------"+i);
for (int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++) {
//System.out.println("------j值-------"+j);
// 通过 row.getCell(j).toString() 获取单元格内容,
cell = row.getCell(j).toString();
if(i>0){
if(j==0){
xy[i-1][j]=cell;
}
else{
xy[i-1][j]=cell;
}
}
//System.out.println("----值-----"+cell);
}
//System.out.println("-------------");
}
return xy;
}
二。通过数组中的坐标插入或更新到excel中
public static void updateExcel(File exlFile,int sheetIndex,String[][] xy)throws Exception{
int b = 0;
FileInputStream fis=new FileInputStream(exlFile);
//XSSFWorkbook workbook=new XSSFWorkbook(fis);
XSSFWorkbook workbook=new XSSFWorkbook(fis);
XSSFSheet sheet=workbook.getSheetAt(sheetIndex);
for(int z=0; z<xy.length-1;z++){
String z1 = xy[z][0].substring((xy[z][0].indexOf(".",xy[z][0].indexOf(".")+1)+1));
int z2 = Integer.parseInt(z1);
XSSFRow r=sheet.getRow(17-z2);
if(r==null){
r=sheet.createRow(17-z2);
}
for(int k=0; k<2;k++){
if(k==0){
String k1 = xy[z][k].substring(xy[z][k].indexOf(".")+1,xy[z][k].indexOf(".",xy[z][k].indexOf(".")+1 ));
int k2 = Integer.parseInt(k1);
//System.out.print("------k2值-----非绝对值"+k2);
if(k2>0){
b = 10-k2;
}
else if (k2==0){
b = 10;
}
else{
b = k2 * (1 - ((k2 >>> 31)<<1))+10;
}
//System.out.println("------b值------绝对值"+b);
}
else{
System.out.println("--行数---"+(17-z2)+"-----z值----"+z+"------列号码------"+b+"--------"+xy[z][k]);
XSSFCell cell = r.getCell(b);
if(cell == null){
cell = r.createCell(b);
}
cell.setCellValue(xy[z][k]);
}
}
}
三,解决存入excel中数据位文本形式转换成数字格式:
方法1:选中一个常规格式的空白单元格→复制→选中要粘贴的区域→选择性粘贴、加、确定。
方法2:选中一个常规格式的空白单元格→输入1→复制→选中要粘贴的区域→选择性粘贴、乘、确定。