java操作替换excel指定字符串

如何用jxl或者poi,遍历excel文件,然后查找制定字符,比如:$ORGCODE,遍历查找出来,然后替换成自己想替换的内容。(即遍历,查找,替换),大神给个思路吧。(不是用坐标查找。)

spire.xls for java 的方法比较简单,可参考:


import com.spire.xls.CellRange;


import com.spire.xls.ExcelVersion;


import com.spire.xls.Workbook;


import com.spire.xls.Worksheet;


public class ReplaceData {


public static void main(String[] args){



//创建Workbook实例


Workbook workbook = new Workbook();


//加载Excel文档


workbook.loadFromFile("Test.xlsx");


//获取第一个工作表


Worksheet worksheet = workbook.getWorksheets().get(0);


//查找工作表中的指定文字


CellRange[] ranges = worksheet.findAllString("合计", true, true);



for (CellRange range : ranges)


{


//替换为新文字


range.setText("替换");


       }


//保存结果文档


workbook.saveToFile("ReplaceData.xlsx", ExcelVersion.Version2013);


}


}

参考自官网教程

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-17
POI读取就不用讲了把,网上资料很多,你遍历整个文件,用正则表达式判断某cell的值是否是<.*?>
,然后取出 里面的值,比如name=theAccount,事先把所有的键值对存入map中,然后根据name取出value值,用setCell方法放入excel中,遍历完了之后,save 工作薄就好了。追问

全部遍历出来了,用正则表达式也找出来了,全部找出来了,保存的时候该怎么保存?

追答  Map map = new HashMap<String, Object>();
  map.put("theAccount", "XXXX");
  // POI3.8
  String filePath = "D:\\test.xls";
  InputStream is = new FileInputStream(filePath);
  Workbook book = null;
  book = WorkbookFactory.create(is);
  ExcelReader er = new Test.ExcelReader(book);
  er.setSheet(0);// 设置excel读取的是哪个sheet
  Sheet sheet = er.getSheet();
  int rowNum = sheet.getLastRowNum() + 1;
  for (int i = 0; i < rowNum; i++) {
   er.setRow(i);
   Row row = er.getRow();
   int cellNumrow = row.getLastCellNum() + 1;
   for (int j = 0; j < cellNumrow; j++) {
    String cellValue = er.getCellValue(j);
    String value = "";
    if (cellValue != null && cellValue.trim().matches("[<].*?[>]")) {
     value = cellValue.replaceAll("[<](.*?)[>]", "$1");
     System.out.println(value);
     er.setCell(j, map.get(value).toString());
    }
   }
  }
  OutputStream out = new FileOutputStream(filePath);
  er.workbook.write(out);

//我写的代码超过字数了,发不上去,下次你问要代码的问题,最好去csdn上,没有字数限制

追问

太谢谢了,方便留个联系方式?CSDN的主页,或者QQ也行。

追答

我的csdn账号就是这个名称 sdojqy1122,嘿嘿,互相学习。

本回答被提问者采纳
相似回答