XSSFSheet sheet = workbook.getSheetAt(0); byte[] pwd = sheet.getCTWorksheet().getSheetProtection().getPassword();
Yegor On Mon, Aug 6, 2012 at 10:53 AM, fina2demo <chelomi...@fina.net.ge> wrote: > Hello, > > I am developing application and I use apache poi 3.8 to proceed 2003 and > 2007 excel files. One feature that I use is reading each sheet's protection > hash and for 2003 file format I do it with following: > > *HSSFWorkbook xlsWb=..... > xlsWb.getSheet(0).getPassword();* > > Which works fine for *.xls file, but problem is that I am not able to get > same password hash for 2007 (*.xlsx) format file, because in order to read > *.xlsx file, I use following: > > *XSSFWorkbook xssfw = new XSSFWorkbook(is); > xssfw.getSheetAt(0).... // It does not have getPassword() method* > > But it does not have method getPassword(); or something which is used to get > password hash from sheet. I solved it with using java.util.zip.* with > following: > > * > static int getHashedPassword(File file, int sheetIndex) throws Exception > { > String sheetName = "sheet" + (sheetIndex+1); > InputStream is = new FileInputStream(file); > ZipInputStream zis = new ZipInputStream(is); > ZipEntry entry; > > while ((entry = zis.getNextEntry()) != null) > { > if > (entry.getName().toLowerCase().contains(sheetName.toLowerCase())) > { > break; > } > } > > int openTagSymbol = ((int) '<'); > int closeTagSymbol = ((int) '>'); > > int character = zis.read(); > String password = ""; > > while (character > 0) > { > String tag = ""; > if (character == openTagSymbol) > { > while (character != closeTagSymbol) > { > character = zis.read(); > tag += (char) character; > } > if (tag.contains("sheetProtection")) > { > int index = tag.indexOf("password=") + > "password=".length() + 1; > char quotes = '\"'; > for (int i = index;; i++) > { > char symbol = tag.charAt(i); > if (symbol == quotes) > { > break; > } > password += symbol; > } > break; > } > } > character = zis.read(); > } > > return ((password.length() > 0) ? (Integer.parseInt(password, 16)) : > (-1)); > } > * > > my question is: how can I get protection password hash from *.xlsx file with > using apache POI 3.8? Please give me some samples > > > > -- > View this message in context: > http://apache-poi.1045710.n5.nabble.com/Reading-password-hash-from-xlsx-file-tp5710617.html > Sent from the POI - Dev mailing list archive at Nabble.com. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org > For additional commands, e-mail: dev-h...@poi.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org For additional commands, e-mail: dev-h...@poi.apache.org