[메모] NPOI에서 Excel 양식에 대한 암호 보호
하고 싶은 일
어떤 사건에서 엑셀이 왜곡되었는지는 간단하고 알기 쉬운 방법을 취해야 한다.
"그러면 책에 비밀번호를 넣으면 되잖아!"
이렇게 생각하면서 조사를 시작한 것이 계기였다.
결론
...조사를 시작했지만 책에 비밀번호를 넣는 방법을 몰랐어요.
하지만 좌석을 보호하는 방법을 알았기에 메모로 남겼습니다.
Apache POI 4.1.2
자바에서 POI를 처리하려고 할 때 Worksheet와 Workbook이 잠겼습니다.
filename.javaXSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sample");
WriteCell(sheet, 0, 0, "Hello"); // 参考記事:【C#】NPOIを使ってExcelファイルを作成・編集する
// ワークシートの保護
sheet.protectSheet("password");
// ワークブックの保護
workbook.lockStructure();
workbook.setWorkbookPassword("password", HashAlgorithm.sha256);
// ワークブックの書き出し
var out = new FileOutputStream("C:\\hogehoge.xlsx");
workbook.write(out);
workbook.close();
out.close();
생성된 Excel 파일 "hogehoge.xlsx"를 열 때 잠겼습니다.
NPOI 2.5.1 시
Worksheet를 잠글 수 있지만 Workbook을 잠글 방법을 찾을 수 없습니다.
※ 누군가 알고 있다면 방법을 알려주세요.
워크시트 보호 예제 코드
POI와 차이가 많지 않습니다.
filename.csvar workbook = new XSSFWorkBook();
ISheet worksheet = workBook.CreateSheet("testSheet1");
worksheet.ProtectSheet("password"); //シートのパスワードを設定
workbook.LockStructure(); //ワークブックの構造を保護(ただしパスワードはかからない)
string srcFileName = @"C:\hogehoge.xlsx";
FileStream stream = (File.Exists(srcFileName))
? File.OpenWrite(srcFileName)
: File.Create(srcFileName)
);
workbook.Write(stream);
도전하다
원래 Workbook 보호에서 벗어난 소프트웨어가 있기 때문에 암호를 보호할 수 있어도 변경을 완전히 방지할 수 없다는 것을 주의해야 한다.도대체 쉬운 보호인지 고려해야 한다.
참고 자료
자바에서 POI를 처리하려고 할 때 Worksheet와 Workbook이 잠겼습니다.
filename.java
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sample");
WriteCell(sheet, 0, 0, "Hello"); // 参考記事:【C#】NPOIを使ってExcelファイルを作成・編集する
// ワークシートの保護
sheet.protectSheet("password");
// ワークブックの保護
workbook.lockStructure();
workbook.setWorkbookPassword("password", HashAlgorithm.sha256);
// ワークブックの書き出し
var out = new FileOutputStream("C:\\hogehoge.xlsx");
workbook.write(out);
workbook.close();
out.close();
생성된 Excel 파일 "hogehoge.xlsx"를 열 때 잠겼습니다.NPOI 2.5.1 시
Worksheet를 잠글 수 있지만 Workbook을 잠글 방법을 찾을 수 없습니다.
※ 누군가 알고 있다면 방법을 알려주세요.
워크시트 보호 예제 코드
POI와 차이가 많지 않습니다.
filename.csvar workbook = new XSSFWorkBook();
ISheet worksheet = workBook.CreateSheet("testSheet1");
worksheet.ProtectSheet("password"); //シートのパスワードを設定
workbook.LockStructure(); //ワークブックの構造を保護(ただしパスワードはかからない)
string srcFileName = @"C:\hogehoge.xlsx";
FileStream stream = (File.Exists(srcFileName))
? File.OpenWrite(srcFileName)
: File.Create(srcFileName)
);
workbook.Write(stream);
도전하다
원래 Workbook 보호에서 벗어난 소프트웨어가 있기 때문에 암호를 보호할 수 있어도 변경을 완전히 방지할 수 없다는 것을 주의해야 한다.도대체 쉬운 보호인지 고려해야 한다.
참고 자료
var workbook = new XSSFWorkBook();
ISheet worksheet = workBook.CreateSheet("testSheet1");
worksheet.ProtectSheet("password"); //シートのパスワードを設定
workbook.LockStructure(); //ワークブックの構造を保護(ただしパスワードはかからない)
string srcFileName = @"C:\hogehoge.xlsx";
FileStream stream = (File.Exists(srcFileName))
? File.OpenWrite(srcFileName)
: File.Create(srcFileName)
);
workbook.Write(stream);
원래 Workbook 보호에서 벗어난 소프트웨어가 있기 때문에 암호를 보호할 수 있어도 변경을 완전히 방지할 수 없다는 것을 주의해야 한다.도대체 쉬운 보호인지 고려해야 한다.
참고 자료
Protect workbook for structure ※ 결과는 미해결 상태로 종료되었습니다
기록 편집
(2020.06.20) FileInfo에 대한 암호화가 작성되었지만 자세한 정보가 필요하여 삭제되었습니다.
Reference
이 문제에 관하여([메모] NPOI에서 Excel 양식에 대한 암호 보호), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kwsmax/items/270a91a6996aa2c626cc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([메모] NPOI에서 Excel 양식에 대한 암호 보호), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kwsmax/items/270a91a6996aa2c626cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)