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. LaTeX 页眉页脚的设置

    Latex中页眉页脚的设置 1. 首先要加页眉页脚的话,需要启动宏: 我通常用fancyhdr宏包来设置页眉和页脚. \usepackage{fancyhdr} 我们在 LaTeX 中先把 page ...

  2. nginx配置图片防盗链

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${ expires 30d; access_log off; valid_referers none blocked ...

  3. NopCommerce Url分析

    using System; using System.Web; using System.Web.Routing; using Nop.Core; using Nop.Core.Data; using ...

  4. ASP.NET MVC使用Bootstrap系列(4)——使用JavaScript插件

    阅读目录 序言 Data属性 VS 编程API 下拉菜单(dropdown.js) 模态框(modal.js) 标签页(tab.js) 工具提示(tooltip.js) 弹出框(popover.js) ...

  5. 您的应用静态链接到的 OpenSSL 版本有多个安全漏洞。建议您尽快更新 OpenSSL

    安全提醒 您的应用静态链接到的 OpenSSL 版本有多个安全漏洞.建议您尽快更新 OpenSSL. 在开头为 1.0.1h.1.0.0m和 0.9.8za的 OpenSSL 版本中这些漏洞已得到修复 ...

  6. 【8-23】MFC学习笔记 01

    太难了,慢慢学....

  7. javascript 数据类型转换

    javascrīpt 类型转换函数 在Javascrīpt中,Double类型和Int类型都是看作为Number对象. 1.Number转成String number.toString() Strin ...

  8. WebApi常见4xx错误总结!!!

    iis 7上发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 折腾了半天,提示里面的解决方法是: 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在. ...

  9. 清北学堂模拟day6 兔子

    [问题描述] 在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝.更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连.换句话讲,这些兔子 ...

  10. C# 添加excel批注

    public bool AddComent(object coment, int row, int column) { try { Excel.Range range = myExcel.get_Ra ...