2015-02-23 67 views
0

我正在尝试编辑现有工作表,为其添加新值并保护新创建的工作簿。 从网上搜索我来了解sheet.protectSheet(“some_password”)是有帮助的。 但在我的情况下,编译器给出错误,说明protectSheet方法不存在。 然后我试图使用sheet.setProtect(真),但在执行它提供了以下错误:POI保护表

java.lang.NullPointerException 
     at org.apache.poi.hssf.usermodel.HSSFSheet.setProtect(HSSFSheet.java:890) 

这里是我的代码:

FileInputStream fsIP= new FileInputStream(new File(request.getSession().getServletContext().getRealPath(".")+ "/Cheque Printing.xls")); 

HSSFWorkbook wb = new HSSFWorkbook(fsIP); 

HSSFSheet worksheet = wb.getSheetAt(0); 

的是,我通过getSheetAt和访问表的问题不是通过createSheet?

+0

请看看另一个关于SO的答案http://stackoverflow.com/questions/14701322/apache-poi-how-to-protect-sheet-with-options – hanumant 2015-02-23 06:38:41

+0

我想使用hssf而不是xssf它可以帮助我这条路? – JG1991 2015-02-23 08:37:01

+1

我不确定您使用的是哪个版本的Apache POI。但最新版本有一个简单而直接的方法。 https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFSheet.html#protectSheet(java.lang.String) – hanumant 2015-02-23 08:43:57

回答

0

没有更新我的POI库,我发现这个解决方案:

让你参考Excel工作表保护,改变上述行来:

HSSFWorkbook wb = new HSSFWorkbook(fsIP,true);

完蛋了!其余的代码是相同的。