poi导出xlsx格式的excel怎么打不开,求大神帮忙!急

poi导出xlsx格式的excel怎么打不开,求大神帮忙!急

代码如下
/**
* 执行导出Excel操作
*/
function opExportOne(e) {
var f = KaTeX parse error: Expected 'EOF', got '#' at position 3: ("#̲requirePlanDeta…(e.currentTarget).closest(“tr”));
var url = “${ctx}/oms/requirePlan/1/” + false+"/exportDetail?ids="+f.id;
window.location.href = url;
}

/**
* Excel导出
* @param ids
* @param templateId
* @param isTransient
* @param request
* @param response
*/
@RequestMapping(value = “{templateId}/{isTransient}/exportDetail”)
public void exportExcel(@RequestParam(value = “ids”,required = false) String[] ids,
@PathVariable(“templateId”) String templateId,
@PathVariable(“isTransient”) boolean isTransient,
HttpServletRequest request, HttpServletResponse response) {
Searchable searchable = parseSearchFromExport(request);
requirePlanDetailService.exportExcel(ids, searchable, response, templateId, isTransient);
}

业务层:
@Override
public void exportExcel(String[] ids,Searchable searchable, HttpServletResponse response, String templateId, boolean isTransient) {
searchable.removePageable();
UserAuthModel userAuthModel = (UserAuthModel) UserInfoUtil.getCurrentLoginUser();
List purchaseGroupIdList = userAuthModel.getPurchaseGroupIds();
if (CollectionUtil.isNotEmpty(purchaseGroupIdList)) {
searchable.addSearchFilter(“groupId”, Operator.IN, purchaseGroupIdList);
}

	List<String> storerGroupIds = userAuthModel.getStorerGroupIds();
	if (CollectionUtil.isNotEmpty(storerGroupIds)) {
		searchable.addSearchFilter("parentObj.customerId", Operator.IN, storerGroupIds);
	}

	String[] rowName = {"序号","计划号","计划行号","预留号","提报单元","物料编码","物料描述","供应商","采购订单号","主单位","需求数量","需求日期",
			"采购申请号","WBS元素","网络号","工单号","工单描述","项目、装置名称","施工单位"};
	HSSFWorkbook workbook = new HSSFWorkbook();
	HSSFSheet sheet = workbook.createSheet("需求计划明细表");
	HSSFCellStyle columnTopStyle = this.getColumnTopStyle(workbook);
	HSSFCellStyle style = this.getStyle(workbook);
	// 定义所需列数
	int columnNum = rowName.length;
	HSSFRow rowRowName = sheet.createRow(1);
	rowRowName.setHeight((short) (25 * 25));
	// 将列头设置到sheet的单元格中
	for(int n=0;n<columnNum;n++){
		HSSFCell  cellRowName = rowRowName.createCell(n);                //创建列头对应个数的单元格
		cellRowName.setCellType(HSSFCell.CELL_TYPE_STRING);                //设置列头单元格的数据类型
		HSSFRichTextString text = new HSSFRichTextString(rowName[n]);
		cellRowName.setCellValue(text);                                    //设置列头单元格的值
		cellRowName.setCellStyle(columnTopStyle);                        //设置列头单元格样式
	}
	//写入数据
	List<RequirePlanDetail> result = requirePlanDetailRepository.findAll(Arrays.asList(ids));
	int i = 1;
	for(RequirePlanDetail requirePlanDetail : result){
		if(requirePlanDetail.getIsResease().equals(YesNoEnum.YES.getCode())){
			continue;
		}
		HSSFRow row = sheet.createRow(++i);
		row.setHeight((short) (30 * 20));

		HSSFCell  cell0 = row.createCell(0);
		cell0.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
		cell0.setCellValue(i - 1);
		cell0.setCellStyle(style);
		this.setStyleAndValue(row.createCell(1), requirePlanDetail.getPlanNo(), style);
		this.setStyleAndValue(row.createCell(2),requirePlanDetail.getColNo(),style);
		this.setStyleAndValue(row.createCell(3),requirePlanDetail.getReserveNo(),style);
		this.setStyleAndValue(row.createCell(4), requirePlanDetail.getParentObj().getCustomerName(), style);
		this.setStyleAndValue(row.createCell(5),requirePlanDetail.getPartNo(),style);
		this.setStyleAndValue(row.createCell(6),requirePlanDetail.getPartName(),style);
		this.setStyleAndValue(row.createCell(7),requirePlanDetail.getVendorName(),style);
		this.setStyleAndValue(row.createCell(8),requirePlanDetail.getPoNo(),style);
		this.setStyleAndValue(row.createCell(9),requirePlanDetail.getUnitName(),style);
		this.setStyleAndValue(row.createCell(10),String.valueOf(requirePlanDetail.getQtyRequire()),style);
		this.setStyleAndValue(row.createCell(11),requirePlanDetail.getParentObj().getRequireDate() == null ? "" : DateUtil.formatDate(requirePlanDetail.getParentObj().getRequireDate(), "yyyy-MM-dd HH:mm:ss"),style);
		this.setStyleAndValue(row.createCell(12),requirePlanDetail.getApplyNo(),style);
		this.setStyleAndValue(row.createCell(13),requirePlanDetail.getWbsElement(),style);
		this.setStyleAndValue(row.createCell(14),requirePlanDetail.getNetworkNo(),style);
		this.setStyleAndValue(row.createCell(15),requirePlanDetail.getJobNo(),style);
		this.setStyleAndValue(row.createCell(16),requirePlanDetail.getJobDesc(),style);
		this.setStyleAndValue(row.createCell(17),requirePlanDetail.getProjectName(),style);
		this.setStyleAndValue(row.createCell(18),requirePlanDetail.getBuilderName(),style);
	}
	//让列宽随着导出的列长自动适应
	for (int colNum = 0; colNum <=18; colNum++) {
		int columnWidth = sheet.getColumnWidth(colNum) / 256;
		for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {
			HSSFRow currentRow;
			//当前行未被使用过
			if (sheet.getRow(rowNum) == null) {
				currentRow = sheet.createRow(rowNum);
			} else {
				currentRow = sheet.getRow(rowNum);
			}
			if (currentRow.getCell(colNum) != null) {
				HSSFCell currentCell = currentRow.getCell(colNum);
				if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
					int length = currentCell.getStringCellValue().getBytes().length;
					if (columnWidth < length) {
						columnWidth = length;
					}
				}
			}
		}
		if(colNum == 0){
			sheet.setColumnWidth(colNum, (columnWidth-2) * 128);
		}else{
			sheet.setColumnWidth(colNum, (columnWidth+4) * 256);
		}
	}

	try {
		String fileName = "需求计划明细";
		//输出Excel文件
		OutputStream output=response.getOutputStream();
		response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(fileName + DateUtil.formatDate(new Date(), "yyyyMMdd") + ".xlsx", "UTF-8"))));
		response.setHeader("Connection", "close");
		response.setHeader("Content-Type", "application/vnd.ms-excel");
		workbook.write(output);
		output.close();
	}catch(Exception e){
		LogUtil.logError("导出Excel失败!原因:" + e.getMessage());
	}
}

/*
 * 列头单元格样式
 */
public HSSFCellStyle getColumnTopStyle(HSSFWorkbook workbook) {
	HSSFFont font = workbook.createFont();
	font.setFontHeightInPoints((short) 12);
	font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
	HSSFCellStyle style = workbook.createCellStyle();
	style.setFont(font);
	style.setWrapText(false);
	style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
	style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
	style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
	style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
	style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
	style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
	style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
	style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
	return style;
}

/*
 * 列数据信息头单元格样式
 */
public HSSFCellStyle getStyle(HSSFWorkbook workbook) {
	HSSFFont font = workbook.createFont();
	font.setFontHeightInPoints((short) 12);
	HSSFCellStyle style = workbook.createCellStyle();
	style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
	style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
	style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
	style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
	style.setFont(font);
	style.setWrapText(false);
	style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
	style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

	return style;

}

/*
 * 列数据信息单元格样式
 * @param cell
 * @param value
 * @param style
 */
public void setStyleAndValue(HSSFCell cell,String value,HSSFCellStyle style){
	cell.setCellType(HSSFCell.CELL_TYPE_STRING);
	HSSFRichTextString text = new HSSFRichTextString(value);
	cell.setCellValue(text);
	cell.setCellStyle(style);
}

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值