Java生成Excel加密文件
导入poi包
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
实现的Java类
package xlsxCreateAndJiami;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
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.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class XlsxCreate {
public static void main(String[] args) {
XlsxCre();
}
@SuppressWarnings("resource")
public static void XlsxCre() {
String filename="D:\\TestCreate.xlsx";
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("sheet"+1);
Row headRow=sheet.createRow(0);
headRow.createCell(0).setCellValue("one");
headRow.createCell(1).setCellValue("two");
headRow.createCell(2).setCellValue("three");
headRow.createCell(3).setCellValue("four");
Row firstRow=sheet.createRow(1);
firstRow.createCell(0).setCellValue("1");
firstRow.createCell(1).setCellValue("2");
firstRow.createCell(2).setCellValue("3");
firstRow.createCell(3).setCellValue("4");
FileOutputStream fos=null;
try {
//保存此XSSFWorkbook对象为xlsx文件
workbook.write(new FileOutputStream(filename));
POIFSFileSystem fs = new POIFSFileSystem();
EncryptionInfo info = new EncryptionInfo(EncryptionMode.standard);
Encryptor enc = info.getEncryptor();
//设置密码
enc.confirmPassword("zmf");
//加密文件
OPCPackage opc = OPCPackage.open(new File(filename), PackageAccess.READ_WRITE);
OutputStream os = enc.getDataStream(fs);
opc.save(os);
opc.close();
//把加密后的文件写回到流
fos = new FileOutputStream(filename);
fs.writeFilesystem(fos);
fos.flush();
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("over");
}
}