【POI】修改Excel内容
package com.what21.test; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; 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 org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class TestPoi {
public static void updateExcel(File exlFile, String sheetName, int col,
int row, String value) throws Exception {
FileInputStream fis = new FileInputStream(exlFile);
HSSFWorkbook workbook = new HSSFWorkbook(fis);
// workbook.
HSSFSheet sheet = workbook.getSheet(sheetName);
HSSFCell mycell = sheet.createRow(row).createCell(col);
mycell.setCellValue(value);
HSSFRow r = sheet.getRow(row);
HSSFCell cell = r.getCell(col);
// int type=cell.getCellType();
String str1 = cell.getStringCellValue();
// 这里假设对应单元格原来的类型也是String类型
cell.setCellValue(value);
System.out.println("单元格原来值为" + str1);
System.out.println("单元格值被更新为" + value); fis.close();// 关闭文件输入流 FileOutputStream fos = new FileOutputStream(exlFile);
workbook.write(fos);
fos.close();// 关闭文件输出流
} public static void update2(String url) {
int coloum = 2; // 比如你要获取第1列
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(url));
HSSFSheet sheet = workbook.getSheet("Sheet1"); for (int i = 0; i <= sheet.getLastRowNum(); i++) {
HSSFRow row = sheet.getRow((short) i);
if (null == row) {
continue;
} else {
HSSFCell cell = row.getCell((short) coloum);
if (null == cell) {
continue;
} else { cell.setCellValue("he1");
}
}
}
FileOutputStream out = null;
try {
out = new FileOutputStream(url);
workbook.write(out);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public static boolean writeXlsx(String fileName, int row, int column,
String content) {
boolean flag = false;
FileOutputStream out = null;
XSSFWorkbook xwb;
try {
xwb = new XSSFWorkbook(new FileInputStream(fileName));
XSSFSheet xSheet = xwb.getSheetAt(0);
XSSFCell xCell = xSheet.createRow(row).createCell(column);
xCell.setCellValue(content);
out = new FileOutputStream(fileName);
xwb.write(out);
out.close();
flag = true;
} catch (IOException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
}
return flag;
} public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// 下面改成你自己的xls文件进行测试,2003格式的,不能2007
File file = new File("C:\\Users\\Administrator\\Desktop\\test.xls");
// 下面尝试更改第一行第一列的单元格的值
updateExcel(file, "Sheet1", 0, 0, "hehe");
update2("C:\\Users\\Administrator\\Desktop\\test.xls");
File file1 = new File(
"C:\\Users\\Administrator\\Desktop\\test - 副本.xlsx");
writeXlsx("C:\\Users\\Administrator\\Desktop\\test - 副本.xlsx", 0, 0,
"1");
}
}
注意事项:如果修改的坐标对应的单元格是空,会报错。
建议这么写:
HSSFCell mycell = sheet.createRow(row).createCell(col);
mycell.setCellValue(value);
这样写有一个问题:如果定位错误,会带来不必要的麻烦。
通常在生成原始Excel时,最好能对空单元格赋空(强制添加空字符串),这样在使用SAXPOI或者SAX解析较大文本的Excel的时候,可以
有效的避免因为空单元格而导致列数据错位的问题。
上面的代码是很常见的,在网上能找到一堆。根据不同的场景可以传入一组需要修改的坐标,通过循环来修改。这样可以减少打开文件的次数,提高
效率。
【POI】修改Excel内容的更多相关文章
- POI读取Excel内容格式化
在用POI读取Excel内容时,经常会遇到数据格式化的问题. 比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其 ...
- poi解析Excel内容
poi可以将指定目录下的Excel中的内容解析.读取到java程序中.下面是一个Demo: 使用poi需要导下包,如下: 首先是准备读取的Excel表,存放在"E:\programming\ ...
- java poi 读取excel内容
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import or ...
- poi读取excel内容工具类
该工具类可以读取excel2007,excel2003等格式的文件,xls.xlsx文件格式 package com.visolink; import org.apache.poi.hssf.user ...
- python修改excel内容
前提:安装pip install xlutils和xlrd 思路:xlrd用来读数据,xlutils用来修改数据:先打开excel——读到原来的sheet页——生成可以修改的excel和sheet页— ...
- poi读取Excel内容数据
public static void main(String[] args) { try{ //获取文件输入流 FileInputStream fileIn = new FileInputStream ...
- POI根据EXCEL模板,修改内容导出新EXCEL (只支持HSSF)
package excelPoiTest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutput ...
- poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算
/** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...
- [转]POI读写Excel 修改
[转]POI读写Excel 修改 一.Excel基础 二.HSSF概况 三.通过usermodel读取文件 四.通过usermodel写入文件 五.通过eventusermodel读取文件 六.HSS ...
随机推荐
- IIS短文件名扫描工具
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import httplib import urlparse import strin ...
- swoole 教程
环境安装:http://blog.csdn.net/ldy3243942/article/details/40263735 Task使用以及swoole_client:http://blog.csdn ...
- 【转】常用的shell脚本
from:http://blog.sina.com.cn/s/blog_4152a9f501013r6c.html 常用的shell脚本 (2012-10-10 22:09:07) 转载▼ 标签: 杂 ...
- 【8-21】java学习笔记03
内部类(静态内部类&非静态内部类) 静态外部类成员方法(如main方法)不能直接访问内部类,但是可以通过外部类的方法,在其中创建内部类实例对象,间接使用: 非静态内部类可以直接访问外部类的私有 ...
- 如何在本地配置php分析工具xhprof
测试环境: linuxMint + nginx1.4.6+mysql5.5+php5.5 什么是xhprof? XHProf是一个分层PHP性能分析工具.它报告函数级别的请求次数和各种指标,包括阻塞时 ...
- oracle中的nvl(), nvl2()函数
nvl()函数是oracle/plpgsql中的一个函数,格式为:nvl(string1, replace_with) 功能:如果string1 位null,那么nvl()函数返回replace_wi ...
- TTFB-首字节时间简介
百度站长工具里看到有一个"首字节时间"的建议,第一次听说,还真不知道是什么东东.百度站长工具里面的解释是:"浏览器开始收到服务器响应数据的时间=后台处理时间+重定向时间, ...
- poj3335 半交平面,多边形内核
Rotating Scoreboard Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5300 Accepted: 21 ...
- PHP如何释放内存之unset销毁变量并释放内存详解
PHP的unset()函数用来清除.销毁变量,不用的变量,我们可以用unset()将它销毁.但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子: <?php $s = ...
- 自己动手开发jQuery插件
因为工作需要,所以这几天琢磨了一下关于jQuery插件开发的问题,经过一天鏖战,终于完成自己动手做的第一个jQuery插件,对于俺这种见了css就蛋疼菊紧的人来说,一天时间8小时,保守估计有5个小时在 ...