Java修改excel内容

java 通过poi修改excel数据的实例网上一大把,但是用的时候却可能遇到问题,我把我经过测试,成功的代码分享给大家,也给自己做一个记录,留着以后用。

本实例是操作excel2010的程序

代码如下:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * 将aaa文件中的所有Study Subject ID开头的换成 “研究主题”,Protocol ID开头的换成“协议”。这个可以自己修改,根据需求不同灵活变化
 * @author sun
 *
 */

    public class WriteExcelPOI {

        public void writeExcelPOI() {
            try {

                String fileName = "D:\\aaa.xlsx";  //修改d盘的aaa.xlsx文件
                XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(fileName));
                Map<String, String> fields = new HashMap<String, String>();
                fields = getFieldMap();  //获取要修改字段的集合
                String fillStr="";    //存储aaa文件里的数据
                String[] fillSplit=null;
                XSSFSheet xSheet = xwb.getSheetAt(0);  //获取excel表的第一个sheet
                for (int i = 0; i <= xSheet.getLastRowNum(); i++) {  //遍历所有的行
                    if(xSheet.getRow(i)==null){ //这行为空执行下次循环
                        continue;
                    }

                    for (int j = 0; j <=  xSheet.getRow(i).getPhysicalNumberOfCells(); j++) {  //遍历当前行的所有列
                        if(xSheet.getRow(i).getCell(j)==null){//为空执行下次循环
//                            System.out.println("qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq");
                            continue;
                        }
                        fillStr = (xSheet.getRow(i)).getCell(j).toString();//获取当前单元格的数据
                        fillSplit=fillStr.split("_");//切割,本人的数据是以"_"为分隔符的这个可以根据自己情况改变
//                        XSSFRow xRow = xSheet.createRow(i);
//                        XSSFCell xCell = xRow.createCell(j);
                        XSSFCell xCell=xSheet.getRow(i).getCell(j); //获取单元格对象,这块不能向上边那两句代码那么写,不能用createXXX,用的话会只把第一列的数据改掉
                        xCell.setCellValue(fields.get(fillSplit[0].trim())==null?fillStr:fields.get(fillSplit[0].trim()));//修改数据,看数据是否和字段集合中的数据匹配,不匹配使用元数据
//                        System.out.println(fields.get(fillSplit[0].trim()));
                    }
                }

                FileOutputStream out = new FileOutputStream(fileName);
                xwb.write(out);
                out.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        private String getValue(XSSFCell xCell) {
            if (xCell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {

                return String.valueOf(xCell.getBooleanCellValue());
            } else if (xCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {

                return String.valueOf(xCell.getNumericCellValue());
            } else {

                return String.valueOf(xCell.getStringCellValue());
            }

        }

        private Map<String, String> getFieldMap(){
            Map<String, String> fields = new HashMap<String, String>();
            fields.put("Study Subject ID", "研究主题");
            fields.put("Protocol ID", "协议");
//            try{
//            String fileName = "D:\\yuan.xlsx";
//            XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(fileName));
//
//            XSSFSheet xSheet = xwb.getSheetAt(3);
//            for (int i = 0; i <= xSheet.getLastRowNum(); i++) {
//                fields.put(xSheet.getRow(i).getCell(0).toString(),xSheet.getRow(i).getCell(1).toString());
////                System.out.println("---"+xSheet.getRow(i).getCell(0)+"*---"+fields.get("A1"));
//                }
//            }
//            catch(Exception e){
//                e.printStackTrace();
//            }
            return fields;
        }
         public static void main(String[] args) {
            WriteExcelPOI a = new WriteExcelPOI();

            a.writeExcelPOI();
        }
    }

使用的jar包在: http://download.csdn.net/detail/gaizhongfeng/8535377

有什么问题欢迎指出,也可以加我的qq: 212966054

时间: 2024-09-29 08:05:23

Java修改excel内容的相关文章

JAVA修改excel的内容

package com.bestpay.bpbp.bill.init; /** * Created by Qj on 2015/08/17. */ import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import java.io.File; /** * Created by Qj on 2015/08/03. */ publi

java修改文件内容

文件的读和写,大家都不陌生,但是修改呢?按照普通的读写流去修改的话,只能全部读取出来,在内存中修改好后,全部写进去,这样对于文件内容过多的时,性能很低. 最近在遇到这个问题的时候,发现RandomAccessFile这个类正好能解决我的问题,废话不多说,下面直接贴代码,分享给大家,有不对的地方欢迎指教,谢谢 /**     * 修改文件内容     * @param fileName     * @param oldstr     * @param newStr     * @return  

【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

Java读取Excel内容(转)

借助于apathe的poi.jar,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可 本例使用java来读取excel的内容并展出出结果,代码如下: import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; impor

Java读取Excel内容

依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> </dependency> 代码 import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermo

java 读取excel内容转为JSONArray

需要引入的JAR     <!--*.xls--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6.8</version> </dependency> <dependency> <groupId>com.alibaba<

Java编程:使用Java读取Excel文件内容

微软的ODBC驱动程序把工作表中的第一行作为列名(译者注:即字段名),工作表名作为数据库表名. 要通过JDBC访问工作表,我们还必须创建一个新的ODBC数据源,在Windows 2000系统上创建数据源的过程如下: 进入“控制面板” --> “管理工具” --> “数据源(ODBC)”,(译者注:打开后选择系统DSN),点击添加,在弹出窗口中选择“Driver do Microsoft Excel(*.xls)” 然后在数据源名处输入一个名字myexcel(译者注:相当于数据库名),然后点击“

【Java】无须额外的包,把Java中的内容输出到Excel中,无乱码,绝对兼容Excel2003与2007

Java输出一段文本到txt中大家基本都会了,这已经是学习Java的必修课了,不会也没有问题,具体可以看<[Java]输入与输出与JDK1.5之后的新型字符串StringBuilder>(点击打开链接).网上对于Java内容转化成Excel的内容大多数都是需要什么poi包,jsl包,一堆奇奇怪怪的jar插件.其实仅仅利用java.io.*;这个基本包就能够把Java中的内容输出到Excel表中,当然,如果你是要处理Mysql数据库不要这样做了,直接一条Mysql的查询命令就能把Mysql的查询

Java之扫描目录,修改文件内容

扫描目录下文件,修改文件中指定内容 1 package org.utils.tools.fileoper; 2 3 import java.io.*; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 /* 8 * 修改文件中的内容 9 * 替换properties文件中的ip 10 * */ 11 public class EditFile { 12 public static void main(String args[])