`
guhanjie
  • 浏览: 298866 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jxl如何修改单元格的内容

 
阅读更多
用jxl进行EXCEL读写时,经常会遇到这样的问题:
想要重新设置指定单元格的内容,但是保持所有格式不变
为此,我想方设法获取Cell对象,然后猜想Cell对象应该有setContent()或者setString()之类修改文本内容的方法吧。。。。我找了好久,都没有找到,看了JXL的API才发现Cell对象根本就没有这样的接口方法。
在百度上http://zhidao.baidu.com/question/270104374.html&__bd_tkn__=5cbb18342161862f5605bf67a5b122a7971594f48078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb60157a5bfd339d63aaff5a0f03de0125270dd443bf0f3b77ef767c59b88bd344327d705c342cc8147e4038c0a8dbe907f8accbdc8d0cc33d2bf449aa看到一个人想出的一个方法,觉得甚好,贴上来:

大意就是:
先获取该cell的单元格格式:cell.getCellFormat();
然后,自己新建一个label对象:jxl.write.Label lbl = new jxl.write.Label(0, 0, "修改后的值");//将第一个单元格的值改为“修改後的值”;
然后,再把修改后的单元格的格式设定成跟原来一样:lbl.setCellFormat(cf);
最后,把这个新建的Label加入到sheet中,覆盖原来的cell内容。

这样就更新了单元格内容,又没有改变单元格的样式!


以下是原文:
引用
public static void modifyExcel(String excelpath){
		try {
			jxl.Workbook wb =null;  //创建一个workbook对象
			try {
				InputStream is = new FileInputStream(excelpath); //创建一个文件流,读入Excel文件
				wb = Workbook.getWorkbook(is); //将文件流写入到workbook对象
			} catch (BiffException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	       // jxl.Workbook 对象是只读的,所以如果要修改Excel,需要创建一个可读的副本,副本指向原Excel文件(即下面的new File(excelpath))
			jxl.write.WritableWorkbook wbe= Workbook.createWorkbook(new File(excelpath), wb);//创建workbook的副本
			WritableSheet sheet  = wbe.getSheet(0); //获取第一个sheet
			WritableCell cell =sheet.getWritableCell(0, 0);//获取第一个单元格
			jxl.format.CellFormat cf = cell.getCellFormat();//获取第一个单元格的格式
			jxl.write.Label lbl = new jxl.write.Label(0, 0, "修改后的值");//将第一个单元格的值改为“修改後的值”
			lbl.setCellFormat(cf);//将修改后的单元格的格式设定成跟原来一样
			
			sheet.addCell(lbl);//将改过的单元格保存到sheet
			wbe.write();//将修改保存到workbook --》一定要保存
			wbe.close();//关闭workbook,释放内存 ---》一定要释放内存
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (WriteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

分享到:
评论
2 楼 远方的彪 2016-08-08  
远方的彪 写道
不错,解决问题了

但是单元格为空的时候不能解决
1 楼 远方的彪 2016-08-08  
不错,解决问题了

相关推荐

Global site tag (gtag.js) - Google Analytics