加密讀取寫入
package testExcel;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.GeneralSecurityException;
import org.apache.poi.poifs.crypt.Decryptor;
import org.apache.poi.poifs.crypt.EncryptionInfo;
import org.apache.poi.poifs.crypt.EncryptionMode;
import org.apache.poi.poifs.crypt.Encryptor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class testExcel {
public static void main(String arg[]) throws IOException, GeneralSecurityException {
//讀取加密的 Excel
InputStream inp = new FileInputStream("D:/test.xlsx");
POIFSFileSystem pfs = new POIFSFileSystem(inp);
inp.close();
EncryptionInfo encInfo = new EncryptionInfo(pfs);
Decryptor decryptor = Decryptor.getInstance(encInfo);
decryptor.verifyPassword("12345");
XSSFWorkbook workbook = new XSSFWorkbook(decryptor.getDataStream(pfs));
//讀取欄位
Sheet sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(0);
Cell cell = row.getCell(0);
System.out.println(cell.getStringCellValue());
//寫入欄位
row = sheet.createRow(1);
cell = row.createCell(1);
cell.setCellValue("123456789");
//重新加密
POIFSFileSystem fileSystem = new POIFSFileSystem();
EncryptionInfo info = new EncryptionInfo(EncryptionMode.standard);
Encryptor enc = info.getEncryptor();
enc.confirmPassword("12345");
OutputStream encryptedDS = enc.getDataStream(fileSystem);
workbook.write(encryptedDS);
FileOutputStream fos = new FileOutputStream("D:/test.xlsx");
fileSystem.writeFilesystem(fos);
fos.close();
workbook.close();
}
}