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内容的更多相关文章

  1. POI读取Excel内容格式化

    在用POI读取Excel内容时,经常会遇到数据格式化的问题. 比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其 ...

  2. poi解析Excel内容

    poi可以将指定目录下的Excel中的内容解析.读取到java程序中.下面是一个Demo: 使用poi需要导下包,如下: 首先是准备读取的Excel表,存放在"E:\programming\ ...

  3. java poi 读取excel内容

    import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Row; import or ...

  4. poi读取excel内容工具类

    该工具类可以读取excel2007,excel2003等格式的文件,xls.xlsx文件格式 package com.visolink; import org.apache.poi.hssf.user ...

  5. python修改excel内容

    前提:安装pip install xlutils和xlrd 思路:xlrd用来读数据,xlutils用来修改数据:先打开excel——读到原来的sheet页——生成可以修改的excel和sheet页— ...

  6. poi读取Excel内容数据

    public static void main(String[] args) { try{ //获取文件输入流 FileInputStream fileIn = new FileInputStream ...

  7. POI根据EXCEL模板,修改内容导出新EXCEL (只支持HSSF)

    package excelPoiTest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutput ...

  8. poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算

    /** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...

  9. [转]POI读写Excel 修改

    [转]POI读写Excel 修改 一.Excel基础 二.HSSF概况 三.通过usermodel读取文件 四.通过usermodel写入文件 五.通过eventusermodel读取文件 六.HSS ...

随机推荐

  1. jquery 停止animate动画,并且回复最初状态

    // 热门推荐悬浮效果 $("#recom_con li img").mouseenter(function(){ $(this).stop(true, true); $w = p ...

  2. RHEL-界面中文乱码问题

    一.虚拟机里的rhel更换为中文简体后,中文字符变为小方块 二.解决方法: 安装中文支持的软件包 fonts-chinese-3.02-12.el5.noarch.rpm fonts-ISO8859- ...

  3. zencart分类页产品页去掉url中的id号

    最近公司新上的网站被seo指出要修改url,去掉url中产品id.由于我们用的是zencart框架,装了 Ultimate SEO URLs 插件,所以在网上应该有这方面的资料,本文主要参考资料: 原 ...

  4. EF事务

    var db = this.UnitOfWork as CodeFirstDbContext; using (var tan = db.Database.BeginTransaction()) { t ...

  5. string.replace正则表达式说明

    str.replace(reg,function($0,$1,$2...,index,str){ }); $0: 匹配模式的字符串$1...: 匹配模式子表达式的字符串,0个或多个,个数取决于子表达式 ...

  6. 页面多次调用查询文章(have_posts())

    通常来说一个页面只调用查询一次文章.have_posts()   如果页面,比如首页需要按照不同的查询参数调用多次文章 需要做如下处理:   //loop前 $temp_query = $wp_que ...

  7. sqlserver2008 R2 创建作业(定时任务)

    如题: 第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 第七步: 完成!!! 记得把服务打开.设置为自动启动,别重启服务器后没用了.

  8. Kafka Producer相关代码分析【转】

    来源:https://www.zybuluo.com/jewes/note/63925 @jewes 2015-01-17 20:36 字数 1967 阅读 1093 Kafka Producer相关 ...

  9. Hibernate 应用

    完善的持久化层应该达到以下目标: 1.代码可重用性高,能够完成所有的数据库访问操作. 2.如果有需要的话,能够支持多种数据库平台. 3.具有相对独立性,当持久化层的实现发生变化,不会影响上层的实现. ...

  10. Vagrant error: Your VM has become inaccessible.

    博客转自:http://doodlebobbers.com/vagrant-error-your-vm-has-become-inaccessible/ If you’ve deleted a vir ...