Java实现操作excel表格_java

  最近老师布置了个任务,用Java对excel后缀名为xlsx的文件进行简单的增,删,改,查操作;虽说是个简单的程序,可作为刚接触的我来说还是有些磕磕碰碰。不过好在还是完成了,进行一个简单的总结。

  首先导入了一个poi.jar 网上有很多这个资源可以下载

XSSFSheet sheet=null;
XSSFWorkbook book=null;

一:查  (查找本地指定位置的excel表格,在控制台输出) 

public void print_excel(){

  //获取excel表格的行数
  int lastrownumber = sheet.getLastRowNum();
  String ret=" ";
  //获取数据
  for(a=0;a<lastrownumber;a++){
    XSSFRow row=sheet.getRow(a);
    //获取excel表格的列数
    int lastcellnum=row.getLastCellNum();
    for(b=0;b<lastcellnum;b++){

      XSSFCell cell =row.getCell(b);

      //判断cell返回的类型并赋值给ret
      ret=excel_operation.getExcelCellValue(cell);
      System.out.print(ret+" ");
    }
  System.out.println();
  }
}

二:改 (修改excel表格中某一单元格的内容)

public void set_excelcell(int i,int j,String str){
  //获取行的信息
  XSSFRow row=sheet.getRow(i-1);
  //获取列的信息
  XSSFCell cell =row.getCell(j-1);
  //获取被修改单元格的内容
  String string = excel_operation.getExcelCellValue(cell);
  //修改单元格的内容为str
  cell.setCellValue(str);
  System.out.println("已将"+string+"改为"+str);
}

三:增 (在excel表格中插入一行内容到指定位置)

public void insert(int rowIndex, String[] objs) {
  if(rowIndex == 0) {
    throw new IllegalArgumentException("不能插在第0行,第0行是用来定义的!");
  }
  if(rowIndex > sheet.getLastRowNum() + 1) {
    throw new IllegalArgumentException("最多只能插入在最后一行的后面。");
  }
  int referRowIndex = -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);
    }
  }
  Row targetRow = sheet.createRow(rowIndex);
  Row referRow = sheet.getRow(referRowIndex); // 参考行
  Cell targetCell, referCell; 

  for (int i = 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起算的)
  public void delete(int rowIndex) {

  //删除的是最后一行
  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表格中的内容不同,有字符型的,有整数型的等等,必须进行判断其类型才能进行输出)

private static String getExcelCellValue(XSSFCell cell) {
  String ret=" ";
  try {
    //当返回值的类型为空返回空格
    if (cell == null) {
      ret = " ";
    //当返回值的类型为字符串类型
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
      ret = cell.getStringCellValue();

    //当返回值的类型为数值类型
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
      ret = "" + cell.getNumericCellValue();

    //当返回值的类型为表达式类型
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) {
      ret = cell.getCellFormula();

    //当返回值的类型为异常类型
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_ERROR) {
      ret = " " + cell.getErrorCellValue();

    //当返回值的类型为布尔类型
     } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {
      ret = " " + cell.getBooleanCellValue();

    //当返回值的类型为空的时候
    } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BLANK) {
    ret = " ";
    }
  } catch (Exception ex) {
    ex.printStackTrace();
  ret = " ";
  }
  return ret;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java操作excel表格
java操作excel表格、java jsp实现动态表格、java实现网页自动操作、java 自定义表格实现、java实现记录用户操作,以便于您获取更多的相关知识。

时间: 2024-09-11 02:09:20

Java实现操作excel表格_java的相关文章

java怎么将 excel表格含义空单元格、合并的单元格怎么导入数据库

问题描述 java怎么将 excel表格含义空单元格.合并的单元格怎么导入数据库 java excel表格含义空单元格.合并的单元格怎么导入数据库 解决方案 JAVA POI 操作EXCEL 合并单元格 解决方案二: 你是不会用Java读取Excel还是读取了但是不能写入数据库,, 具体是什么问题,, POI操作Excel:http://blog.csdn.net/hekewangzi/article/category/5698027 解决方案三: 可以使用java的POI完成对excel的操作

图片-请问: 用java代码创建excel表格模板,例子如下怎么创建?

问题描述 请问: 用java代码创建excel表格模板,例子如下怎么创建? 解决方案 用poi类,先做好模板,用poi填写 解决方案二: package com.paic.gcc.service.offwork.util; import java.io.OutputStream; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Li

jxl 数值型单元格-jxl 操作excel表格,新增的数值型单元格如何格式化

问题描述 jxl 操作excel表格,新增的数值型单元格如何格式化 比如字符串的单元格,可以引用定义好的样式myStyle,如: Label lb1 = new jxl.write.Label(10, 0, "正常",myStyle); sheet0.addCell(lb1); 但数值型增加的时候,少了一个类似的引用格式参数,如: jxl.write.Number lb2 = new jxl.write.Number(11, 0, 11.11); sheet0.addCell(lb1)

python中使用xlrd、xlwt操作excel表格详解_python

最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需.主要记录使用过程的常见问题及解决. python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库.可从这里下载https://pypi.python.org/pypi.下面分别记录python

JAVA操作Excel表格

一.JExcelApi 可以从文件或者输入流进行读取操作. 基本步骤: 1.由文件或者输入流创建一个workbook; 2.由workbook的getSheet()方法创建一个工作表Sheet(两种方法,下标和名字,下标从0开始): 3.由Sheet的getCell(x,y)方法得到某个单元格,cell对象可以读取它的类型(getType).内容(getContents)等. 读取excel表格内容的代码如下:   1 package com.test; 2 3 import java.io.F

java JXL操作Excel文件

-------------jxl和POI的区别(来自网络,感谢)----- jxl优点: ①Jxl对中文支持非常好,操作简单,方法看名知意. ②Jxl是纯javaAPI,在跨平台上表现的非常完美 ③生成Excel 2000标准格式 ④支持字体.数字.日期操作 ⑤能够修饰单元格属性 ④支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式. 缺点:效率低,图片支持不完善,对格式的支持不如POI强大 POI优点: ①效率高,效率测试,可参考:http://blog.csdn.

as3 操作excel表格

原文 http://blog.sina.com.cn/s/blog_8c26f28301014z2z.html   最近做一个小东西,用到了rt这样的东西,在网上搜了一下,确实有这个功能,但是对中文的支持不是很好,而且,是针对flex 的,纯的as3项目用它就一直报错,因为as项目里面没有ArrayCollection,也没有那些数据校验的类,网上的朋友有很多资料,在加上我自己的一些问题和解决方法,规整如下 官方as3xls的类包swc:http://code.google.com/p/as3x

C#用webbrowser在Form中嵌入并且操作Excel表格,如何让他不提示是否保存并取消保存?

excel|web 一.首先简要回顾一下如何操作Excel表             先要添加对Excel的引用.选择项目-〉添加引用-〉COM-〉添加Microsoft   Excel   9.0.(不同的office讲会有不同版本的dll文件).           using   Excel;           using   System.Reflection;                     //产生一个Excel.Application的新进程           Exce

java selenium 操作浏览器实例_java

本篇文章介绍selenium 操作浏览器 阅读目录 浏览器最大化 前进,后退, 刷新 截图操作 模拟鼠标操作 杀掉Windows浏览器进程 浏览器最大化 前进,后退, 刷新 public static void testBrowser(WebDriver driver) throws Exception { driver.get("http://www.cnblogs.com/tankxiao"); Thread.sleep(5000); // 浏览器最大化 driver.manage