java 操作Excel表 创建 查看 修改
需要用到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(); } }
浙公网安备 33010602011771号