EXCEL导出文件加密

public void exportExel(String fileName, String pwd,
List<Map<String, Object>> listContent, HttpServletRequest request,
HttpServletResponse response) throws IOException {

SysUserVO userInfo = ResourceUtil.getSessionUserName(request);
String userId = userInfo.getUserId();

// 添加下载日志
service.insertExportLog(userId, fileName);

// poi使用模板生成excel
String realPath = request.getSession().getServletContext()
.getRealPath("");
String inPath = realPath
+ "/WEB-INF/classes/com/tdxx/excel/template.xlsx";


// 获取模板
FileInputStream fis = new FileInputStream(inPath);
// 如果是xlsx,2007,用XSSF,如果是xls,2003,用HSSF
XSSFWorkbook workBook = new XSSFWorkbook(fis);
// 获取第一个sheet页。
// XSSFSheet sheet = workBook.getSheetAt(0);


if (listContent != null && listContent.size() > 0) {
// 标题部分
List<String> titleList = new ArrayList<String>(listContent.get(0)
.keySet());


String[] excelKeyArray = new String[titleList.size()];
for (int j = 0; j < titleList.size(); j++) {
excelKeyArray[j] = titleList.get(j);
}


// 数据全部放到一个sheet里面
int len = listContent.size();


XSSFSheet sheet = workBook.getSheetAt(0); // 创建一个工作表


// 设置权限
if (pwd != null) {
sheet.enableLocking();
sheet.setSheetPassword(pwd, null);
CTSheetProtection sheetProtection = sheet.getCTWorksheet()
.getSheetProtection();
sheetProtection.setSelectLockedCells(true);
sheetProtection.setSelectUnlockedCells(true);
sheetProtection.setFormatCells(true);
sheetProtection.setFormatColumns(true);
sheetProtection.setFormatRows(true);
sheetProtection.setInsertColumns(true);
sheetProtection.setInsertRows(true);
sheetProtection.setInsertHyperlinks(true);
sheetProtection.setDeleteColumns(true);
sheetProtection.setDeleteRows(true);
sheetProtection.setSort(true);
sheetProtection.setAutoFilter(true);
sheetProtection.setPivotTables(true);
sheetProtection.setObjects(true);
sheetProtection.setScenarios(true);
} else {
sheet.getCTWorksheet().unsetSheetProtection();
}

// 标题
XSSFRow titleRow = sheet.createRow(0);

for (int i = 0; i < excelKeyArray.length; i++) {
titleRow.createCell(i).setCellValue(excelKeyArray[i]);
}

// 内容
for (int i = 0; i < len; i++) {
XSSFRow contentRow = sheet.createRow(i + 1);
for (int j = 0; j < excelKeyArray.length; j++) {
String value = listContent.get(i).get(excelKeyArray[j]) == null ? ""
: listContent.get(i).get(excelKeyArray[j])
.toString().replaceAll("<[^>]*>", "");
contentRow.createCell(j).setCellValue(value);
}
}
}

// 设置内容

response.reset();// 清空输出流

response.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes("GB2312"), "8859_1") + ".xlsx");// 设定输出文件头
response.setContentType("application/msexcel");// 定义输出类型

OutputStream outputStream = new BufferedOutputStream(

response.getOutputStream());



workBook.write(outputStream);


outputStream.flush();

                outputStream.close();

response.flushBuffer();


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Vue中导出Excel文件并进行加密,可以使用以下步骤: 1. 首先,确保你已经安装了xlsx和file-saver这两个库,它们用于处理Excel文件导出和保存。 2. 在Vue组件中,添加一个按钮并绑定一个点击事件,通过该事件触发导出操作。你可以使用Elment UI中的`el-button`组件,如下所示: ```html <el-button size="mini" type="primary" @click="exportData">导出</el-button> ``` 3. 在Vue组件的`methods`中,添加一个名为`exportData`的方法,用于执行导出操作。在该方法中,你需要获取完整的接口路径和请求数据,构建请求并获取导出Excel文件。然后,将文件保存到本地。以下是一个示例代码:[2] ```javascript exportData() { const fileData = this.$appConst.baseUrl + "/XXXX/XXXs/xxxx/xxxxLog"; // 完整的接口路径 const url = window.URL.createObjectURL( new Blob([fileData], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' }) ); const link = document.createElement('a'); link.href = url; link.setAttribute('download', '文件'); // 设置下载文件的名称及文件类型后缀 document.body.appendChild(link); link.click(); document.body.removeChild(link); // 下载完成后移除元素 window.URL.revokeObjectURL(url); // 释放blob对象 } ``` 4. 步骤一:首先,编写一个接口函数,用于导出Excel文件。你可以使用axios库来发送请求并获取响应。以下是一个示例代码: ```javascript export function exportAudit(data) { return axios({ url: '/dataassets/asset/audit/export', method: 'get', params: data, responseType: 'blob', }); } ``` 综上所述,以上是在Vue中导出Excel文件并进行加密的步骤。你可以根据自己的需求进行相应的修改和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue实现点击按钮导出Excel](https://blog.csdn.net/m0_53912016/article/details/121147494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [vue 实现下载并导出excel文件(下载后台返回的文件流)](https://blog.csdn.net/sql65432/article/details/109072631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值