对Excel2007表格进行读和写操作(按坐标),解决插入数据转换成数字格式

一。读取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→复制→选中要粘贴的区域→选择性粘贴、乘、确定。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值