需要用到jxl.jar包  修改有两种方法一种是jxl的  另一种需要apache.poi包

package excelChuLi;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import jxl.*;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class Excel_1 {
    public void show(){//往Excel表插入数据
        try {
            WritableFont font1=new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD);//这儿是设置字体大小和样式
            WritableCellFormat format1=new WritableCellFormat(font1);
            //水平居中
            format1.setAlignment(jxl.format.Alignment.CENTRE);
            //把垂直对齐方式指定为居中
            format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);// 打开文件 上面内容设置样式  可以忽略 只是参考学习
            WritableWorkbook book = Workbook.createWorkbook(new File("C:\\file\\test.xls"));
            // 生成名为“第一页”的工作表,参数0表示这是第一页
            WritableSheet sheet = book.createSheet("第一页", 0);
            //sheet.mergeCells(0,0,5,0);//合并第一行1至6列
            // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
            // 以及单元格内容为test
            Label label = new Label(0, 0, "test",format1);//不需要设置样式的可以去掉format1// 将定义好的单元格添加到工作表中
            sheet.addCell(label);
            /*
             * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第七列,第一行,值为789.123
             */
            jxl.write.Number number = new jxl.write.Number(6, 0, 555.12541);
            sheet.addCell(number);
            // 写入数据并关闭文件
            book.write();
            book.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
public void duqu(){//读取一个单元格内容
    try {
        Workbook book = Workbook.getWorkbook(new File("C:\\file\\test.xls"));
        // 获得第一个工作表对象
        Sheet sheet = book.getSheet(0);
        // 得到第一列第一行的单元格
        Cell cell1 = sheet.getCell(0, 0);
        String result = cell1.getContents();//获取单元格内容
        System.out.println(result);
        book.close();
    } catch (Exception e) {
        System.out.println(e);
    }
}

public void hebin(){
    try {
        // 打开文件
        WritableWorkbook book = Workbook.createWorkbook(new File("C:\\file\\test.xls"));
        // 生成名为“第一页”的工作表,参数0表示这是第一页
        WritableSheet sheet = book.createSheet("第一页", 0);

         //合并第一列第一行到第六列第一行的所有单元格
         sheet.mergeCells(0,0,5,0);
        book.close();
    } catch (Exception e) {
        System.out.println(e);
    }
    
}
public void xunhuan(){
    try {
        Workbook book = Workbook.getWorkbook(new File("C:\\file\\test.xls"));
        // 获得第一个工作表对象
        Sheet sheet = book.getSheet(0);
        // 得到第一列第一行的单元格
        int columnum = sheet.getColumns();// 得到列数
        int rownum = sheet.getRows();// 得到行数
        System.out.println(“列数”+columnum);
        System.out.println("行数"+rownum);
        for (int i = 0; i < rownum; i++)// 循环进行读写
        {
            for (int j = 0; j < columnum; j++) {
                Cell cell1 = sheet.getCell(j, i);
                String result = cell1.getContents();
                System.out.print(result);
                System.out.print("  ");
            }
            System.out.println();
        }
        book.close();
    } catch (Exception e) {
        System.out.println(e);
    }
    
}
public void update(){//第一种修改  需要apache.poi包
    try {
        File file=new File("C:\\file\\test.xls");
        FileInputStream fis=new FileInputStream(file);
        HSSFWorkbook workbook=new HSSFWorkbook(fis);
        HSSFSheet sheet=workbook.getSheetAt(0);//获取第一页
        HSSFRow r=sheet.getRow(1);//第0行
        HSSFCell cell=r.getCell(1);//第0个储存单元
        cell.setCellValue("修改测试");//set入内容
        String str1=cell.getStringCellValue();//get也可以取出值
        System.out.println("单元格原来值为"+str1);
        fis.close();//关闭文件输入流
        FileOutputStream fos=new FileOutputStream(file);//前面的修改信息只是在内存中  这儿才是真的把修改写到表中
        workbook.write(fos);//将修改内容写入
        workbook.close();
        fos.close();//关闭文件输出流
    } catch (Exception e) {
        System.out.println(e);
    }

}
public void updat1(){//第二种将源文件重新写入并修改这个是jxl的
    try {  
        //打开文件  
        Workbook wb = Workbook.getWorkbook(new File("C:\\file\\test1.xls"));  
        //打开一个文本的副本
        WritableWorkbook book = Workbook.createWorkbook(new File("C:\\file\\test1.xls"),wb);//将上一个文本的副本写回到源文件  
        WritableSheet sheet=book.getSheet(0);
        Label label = new Label(2, 0, "test");
        sheet.addCell(label);
        book.write();  
        book.close();  
    } catch (Exception e) {
        System.out.println(e);
    }  
}
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Excel_1 n=new Excel_1();
        //n.show();//新建并写入信息
        //n.duqu();//读取数据
        //n.hebin();
        //n.xunhuan();//循环遍历表格
        n.updat1();
    }

}