当前位置: 首页 > article >正文

java-使用HSSFWorkbook编辑excel文件

HSSF基本操作
HSSF表格案例

对模板excel进行修改然后导出,返回给前端文件路径。

	public Result createProformaInvoiceXls(Map<String, Object> params, HttpServletRequest request) {

		Result result = null; // 只设置几个基本的信息到result上更新前台
        try {
        	String tempFilePath = ExportPathConstants.EXCEL_PATH + File.separator + "proformaInvoiceTemp" + File.separator + "proformaInvoice.xls";
            final String generate_XLSFile_Dir = ExportPathConstants.EXCEL_PATH + File.separator + "ExportTempFileDir" + File.separator + "ExportTempXLSFileDir"
                    + File.separator;
            // 注意路径和sheet名时不要用特殊字符
            final String fileName = "ProformaInvoice__" + SapDateFormat.formatTimeStamp(new Date()) + ".xls";
			String fileSuffix = ".tmp";
			final String tempFile = fileName + fileSuffix;
            new Thread(() -> {
                try {

					List<Map<String, Object>> lrecns = (List<Map<String, Object>>)params.get("LRECNS");
        			ExportData exportData = getInvoiceInfo("PT_ZLRECD", lrecns);
        			File file = ExportFileUtil.getFile(generate_XLSFile_Dir, tempFile);
        			OutputStream fos = new FileOutputStream(file);
        			if(writePIXlsFile(exportData, fos, file, tempFilePath)) {
						if (file.isFile()) {
							file.renameTo(new File(generate_XLSFile_Dir + fileName));
						}
        			}
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }).start();
        	result =  new Result(Message.SUCCESS, new String[]{generate_XLSFile_Dir, fileName});
        } catch (Exception e) {
            e.printStackTrace();
            result = new Result(Message.FAILED, Message.PLEASE_CONTACT_ADMINISTRATOR + e.getMessage());
        }
        return result;
	}
	private boolean writePIXlsFile(ExportData exportData, OutputStream fos, File newFile, String tempFilePath) throws Exception{
		
		newFile = copyNewFile(fos, newFile, tempFilePath);
		InputStream is = null;
        HSSFWorkbook workbook = null;
        HSSFSheet sheet = null;
        is = new FileInputStream(newFile);
        workbook = new HSSFWorkbook(is);
        sheet = workbook.getSheet("PI");
        //创建样式
		HSSFCellStyle boderStyle = workbook.createCellStyle();
		boderStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
		boderStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
		boderStyle.setBorderBottom(CellStyle.BORDER_THIN); 
		boderStyle.setBorderLeft(CellStyle.BORDER_THIN);// 左边框
		boderStyle.setBorderTop(CellStyle.BORDER_THIN);// 上边框
		boderStyle.setBorderRight(CellStyle.BORDER_THIN);// 右边框
		//创建明细
		HSSFRow dataRow = null;
		HSSFCell dataCell = null;
		Date now = new Date();
		sheet = workbook.getSheet("PI");
        dataRow = sheet.getRow(7);
        dataCell = dataRow.getCell(0);
        dataCell.setCellValue("B" + SapDateFormat.formatDate(now) + "A");
        
        workbook.write(fos);
		try {
			fos.close();
		} catch (Exception e) {}
		return true;
	}

http://www.kler.cn/a/412082.html

相关文章:

  • C#中面试的常见问题005
  • 【AI学习】Mamba学习(十八):S6的硬件感知设计
  • 35 基于单片机的精确电压表DA-AD转换
  • day05(单片机高级)PCB基础
  • 深度学习干货总结(持续更新)
  • Selenium 自动化测试demo
  • 《Hello YOLOv8从入门到精通》5,颈部网络(Neck)结构、核心源码和参数调优
  • 用 C++ 写一个 AWS Lambda Hello World
  • zabbix“专家坐诊”第265期问答
  • 【AI系统】Tensor Core 架构演进
  • CTF之密码学(密码特征分析)
  • 【SpringBoot】HttpClient
  • SSL/TLS,SSL,TLS分别是什么
  • 三、表格布局与表单交互
  • 计算机网络-GRE(通用路由封装协议)简介
  • Redis基础配置
  • springboot vue工资管理系统源码和答辩PPT论文
  • 报表工具功能对比:免费易上手的山海鲸报表 vs 庞大用户群体的Tableau
  • Homebrew切换成国内源
  • (免费送源码)计算机毕业设计原创定制:Java+SSM+JSP+Ajax+MySQLSSM国外鞋服代购平台
  • MySQL 内置函数
  • 家庭智慧工程师:如何通过科技提升家居生活质量
  • Vue——【路由】
  • 【Linux】查看文件权限
  • 大数据治理:概念、框架与实践应用
  • [网络安全系列面试题] GET 和 POST 的区别在哪里?