如何在java中修改.xls或.xlsx表格中的内容呢?朋友需要帮忙学习了一下,需求其实很简单,有很多表格文件,需要将其中一部分的数据进行修改并保存到源文件。

看到这样的需求,肯定大多数人第一时间想到的就是“查找替换”,但如果这个文件有成百上千个呢?如果你能找到成百上千个人帮你查找替换,那我就呵呵了,表示你已成仙,不需要看鄙人的博文了。

下面说一下我的思路,刚开始用到了jxl这个jar包中的方法,写了一种方法:

File f = new File("C:\\Users\\Documents\\abc.xls");
try {
Workbook wb = Workbook.getWorkbook(f);//
WritableWorkbook book = wb.createWorkbook(f, wb);
// Sheet sheet = wb.getSheet(0); // 获得第一个工作表对象
WritableSheet st = book.getSheet(0);
for (int i = 0; i < st.getRows(); i++) {for (int j = 0; j < st.getColumns(); j++) {Cell cell = st.getCell(j, i); // 获得单元格System.out.print(cell.getContents() + " ");}System.out.print("\n");
}
book.write();
book.close();
wb.close();
} catch (Exception e) {
e.printStackTrace();
}

如果要修改单元格中的内容可以这样:

File f = new File("C:\\Users\\Documents\\abc.xls");
try {
Workbook wb = Workbook.getWorkbook(f);//
WritableWorkbook book = wb.createWorkbook(f, wb);
// Sheet sheet = wb.getSheet(0); // 获得第一个工作表对象
WritableSheet st = book.getSheet(0);
for (int i = 0; i < st.getRows(); i++) {for (int j = 0; j < st.getColumns(); j++) {Cell cel = st.getCell(j,i);if(cel.getType() == CellType.LABEL){Label label = new Label(j, i, "Yes");// Yes 是需要填充单元格的内容st.addCell(label);}}
}
book.write();
book.close();
wb.close();
} catch (Exception e) {e.printStackTrace();
}

这样发现虽然数据修改了,却会有一个问题,在打开修改后的文件会提示数据不完整,虽然也可以正常使用,但总是这样提示,像我这样追求完美的人岂能忍受,找了一下原因,原来是和office的版本有关,使用jxl的包支持的office的版本是03之前的,现在大家安装的应该最低都是0713的吧。

所以又换了一种方法:

使用apache的poi对表格进行操作:

File f = new File("C:\\Users\\Documents\\abc.xls");
InputStream inputStream = new FileInputStream(f);
HSSFWorkbook xssfWorkbook = new HSSFWorkbook(inputStream);
//  XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0); //如果是.xlsx文件使用这个
HSSFSheet sheet1 = xssfWorkbook.getSheetAt(0);
for(Row row : sheet1){
for(Cell hssfCell : row){if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {hssfCell.setCellValue("nihao");} else if(hssfCell.getCellType() == Cell.CELL_TYPE_STRING){String str = hssfCell.getStringCellValue();if(str.equals("Fail")){hssfCell.setCellValue("Yes");}else if(str.equals("Block")){hssfCell.setCellValue("NA");}else if(str.equals("Warn")){hssfCell.setCellValue("NO");}}}
}

注意这里一定要判断单元格内容的类型,否则会报错

如果需要对某个文件夹下的所有文件进行操作怎么办?

也简单,对文件夹下的文件进行遍历读取修改即可:

File ff = new File("C:/Users/Documents");
File[] files = ff.listFiles();
...
for()
...
...

好了,这次就总结到这里,如果后续还有别的需求会即时更新的。

相关jar包: http://pan.baidu.com/s/1mi12mk4

java中修改Excel表格内容相关推荐

  1. 轻松胜任在Java中处理Excel表格

    轻松胜任在Java中处理Excel表格 概要 许多机构都使用微软Excel表格作为信息交换的方式,众多的非专业编程人员.商业分析师和项目经理都能熟练的运用该技术.而使用Java从Excel文档中分析. ...

  2. java 简单获取Excel表格内容(初学者)

    java 简单获取Excel表格内容(初学者) 代码: package cn.ccaih.read;import org.apache.poi.ss.usermodel.Cell; import or ...

  3. java中读取Excel表格中的数据

    2019独角兽企业重金招聘Python工程师标准>>> 有关java中读取有上传的Excel文件,上传的Excel文件后缀可分为xls,xlsx 1:.xls后缀的文件在获取Work ...

  4. java 批量读取excel表格内容_java 使用POI批量导入excel数据

    一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...

  5. java中修改xml文件内容_修改所有xml文件中的某些内容

    我的需求是:将所有项目的pom.xml中的ip地址替换 package com.company; import org.dom4j.Document; import org.dom4j.Documen ...

  6. mysql表格导入java_使用java技术将Excel表格内容导入mysql数据库

    1.添加POI jar包到项目的lib目录下­ 2.Excel文件目录:d://excel.xls­ 3.数据库字段为:num1 num2 num3 num4 num5 num6­ 4.数据库名:bl ...

  7. 使用java技术将Excel表格内容导入mysql数据库

    1.添加POI jar包到项目的lib目录下­ 2.Excel文件目录:d://excel.xls­ 3.数据库字段为:num1 num2 num3 num4 num5 num6­ 4.数据库名:bl ...

  8. java 操作 word 表格和样式,java读取word表格中的表格 java如何读取word中的excel表格数据...

    Java 利用poi 可以直接读取word中的表格保持样式生1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi ...

  9. 为何excel中数据无法计算机,电脑中excel表格内容无法复制的解决方法

    一位朋友反馈自己在Excel中录入完数据后想要进行复制,将工作表内容直接复制到另一个表中去,可是操作时却失败了.那么,这该怎么办呢?下面是小编给大家分享的电脑中excel表格内容无法复制的解决方法.有 ...

最新文章

  1. 零基础入门学习Pyhton(23)字典:当索引不好用时
  2. VISTA IIS Worker Process 已停止工作 解决办法
  3. zabbix监控交换机出图断断续续
  4. C++ 哪些函数不能声明成虚函数
  5. 从微信AI首席顾问到金融文档智能
  6. 组态王延时启动程序_怎样用组态王软件实现延时功能?比如按下按钮4秒之后,一个指示灯亮,再过5秒,指示灯闪烁(闪烁4S)。谢谢...
  7. wxWidgets:在对话框之间共享信息
  8. 双稳态继电器工作原理图_固态继电器只有单一的作用吗?带你了解不一样的固态继电器...
  9. 计算机语言 angela,Angela
  10. linux启动tongweb命令,linux7开机自启动东方通tongweb
  11. log4j.properties文件中的log4j.rootLogger重要性
  12. 使用微信企业号发送工资条教程
  13. linux下电路仿真软件下载,Virtual Breadboard免费版
  14. 2017中国云计算评测报告
  15. 工商行政许可信息爬取及展示系统的设计与实现
  16. 怎么在中国知网免费下载论文?
  17. 论文参考文献DOI含义
  18. 3分钟打动投资人:商业计划书篇
  19. w3wp.exe进程来调试web应用程序
  20. W/View: requestLayout() improperly called by androidapp:id/toolbar_title} during second layout pass:

热门文章

  1. 微信小程序 客服按钮
  2. 发现一个相当好的食物热量计算器!
  3. storm卡宾枪_《战地4》全武器道具列表一览
  4. 离子液体[C2MIm]SbF6/cas:305370-81-4/1-乙基-3-甲基咪唑六氟锑酸盐的密度值
  5. 带你开发一个日历控件
  6. hdu 1689 Alien’s Necklace(bfs搜索最小奇数环)
  7. 机器人上单神装_LOL无敌神钩机器人出装解析 钩到你怀疑人生
  8. 人工智能实验——猫狗分类MindSpore
  9. 二维卷积输出特征图的计算公式
  10. LATEX(1)设置图、表、公式标签方便上下文引用