0
java
의 보호 된 엑셀을 읽는 코드가 있지만 그 코드가 오류를 표시합니다. 내 자바 코드.java에서 암호로 보호 된 .xls 파일을 읽는 방법?
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Iterator;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.crypt.Decryptor;
import org.apache.poi.poifs.crypt.EncryptionInfo;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class REadProtectedExcel {
public static void main(String[] args) {
String fname = "D:/Vijay/BRS_docs/10168/20.11.2014/20.11.2014/JCR_30.12.14_I Pay.xls";
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fname));
EncryptionInfo info = new EncryptionInfo(fs);
Decryptor d = Decryptor.getInstance(info);
if (d.verifyPassword("vijay")) {
System.out.println("Password correct");
FileInputStream fis = new FileInputStream(fname);
HSSFWorkbook workbook = new HSSFWorkbook(fis);
HSSFSheet sheet = workbook.getSheetAt(0);
Iterator rowIter = sheet.rowIterator();
while (rowIter.hasNext()) {
HSSFRow myRow = (HSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
while (cellIter.hasNext()) {
String cellvalue = "";
HSSFCell myCell = (HSSFCell) cellIter.next();
if (myCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
cellvalue = myCell.getStringCellValue();
} else if (myCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
cellvalue = "" + myCell.getNumericCellValue();
} else if (myCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
cellvalue = "" + myCell.getBooleanCellValue();
} else if (myCell.getCellType() == HSSFCell.CELL_TYPE_FORMULA) {
cellvalue = "" + myCell.getCellFormula();
} else if (myCell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
cellvalue = "";
}
System.out.println("cellvalue--" + cellvalue);
}
}
} else {
System.out.println("Password wrong");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
}
}
이 코드는 다음과 같은 오류를 표시합니다. 내가 poi3.9 항아리, XML 빈스 - 2.3.0jar을 사용하고
java.io.FileNotFoundException: no such entry: "EncryptionInfo"
at org.apache.poi.poifs.filesystem.DirectoryNode.getEntry(DirectoryNode.java:375)
at org.apache.poi.poifs.filesystem.DirectoryNode.createDocumentInputStream(DirectoryNode.java:177)
at org.apache.poi.poifs.crypt.EncryptionInfo.<init>(EncryptionInfo.java:45)
at org.apache.poi.poifs.crypt.EncryptionInfo.<init>(EncryptionInfo.java:39)
at com.test.arrayList.REadProtectedExcel.main(REadProtectedExcel.java:22)
- POI-ooml-3.6
- 나는 사전에 issue.Thanks을 받고 있지 않다.
- 또는 .xls 파일을 읽는 다른 방법을 공유하십시오.
xlsx로 시도해 봤어? xls는 어려운 요구 사항입니까? –
[암호로 보호 된 엑셀 파일] (http://stackoverflow.com/questions/2609301/password-protected-excel-file)의 가능한 복제본과 두 번째 응답이 작동하지 않는 po1 – Setu
에 대한 두 번째 대답을 찾으십시오. – vijayk