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

wordpress后台不好用seo检测

wordpress后台不好用,seo检测,如何找枪手做网站,小吃网站怎么做1、主要功能 导出excel&#xff0c;表头有固定的和动态的。动态表头之间不能穿插固定表头。 2、使用方法 引入下方两个工具类&#xff0c;定义excel固定表头类。调用方法即可。 调用方法&#xff1a; ExcelDynamicHeader<MajorNameChangeReport> ledgerSafetyProblemEx…

1、主要功能

        导出excel,表头有固定的和动态的。动态表头之间不能穿插固定表头

2、使用方法

        引入下方两个工具类,定义excel固定表头类。调用方法即可。

调用方法:

 ExcelDynamicHeader<MajorNameChangeReport> ledgerSafetyProblemExcelVoExcelUtil = new ExcelDynamicHeader<>(MajorNameChangeReport.class);ledgerSafetyProblemExcelVoExcelUtil.exportExcel(response, resultList,data, "sheet名称", "表格大标题名称");

        解释:response:HttpServletResponse response
                  resultlist:固定表头的数据,即 MajorNameChangeReport 类。
                  data:动态数据,数据形式为:Map<String,List<String>> data。map中的key为表头名
                             称,value为表格数据,注意,数据排序需要和固定表头的数据排序一致。

MajorNameChangeReport 类:

@Data
@Accessors(chain = true)
public class MajorNameChangeReport {private Integer num;@ExcelExport(value = "专业")private String majorName;@ExcelExport(value = "单位")private String depart="项";@ExcelExport(value = "合计",isFirtst = false)private String allCount="0";private String deptId;private Long  majorId;private String deptName;}

3、工具类

ExcelDynamicHeader:其中的log需要手动更改
package com.ruoyi.common.utils.poi.excel;import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;/*** @author  Mr.Gan* 类描述:  动态表头导出类* createTime:  2024/10/28 9:30*/
public class ExcelDynamicHeader<T> {private static final Logger log = LoggerFactory.getLogger(ExcelDynamicHeader.class);//大标题private String title;//数据对象private List<T> list;//动态数据对象private Map<String,List<String>> dynamicHeader;//实体对象public Class<T> clazz;//表格private Workbook workbook;//sheet页private Sheet sheet;//对象中所有要导入的字段private List<Field> firstFields=new ArrayList<>();private List<Field> lastFields=new ArrayList<>();public ExcelDynamicHeader(Class<T> clazz){this.clazz = clazz;}/*** @author Mr.Gan* 描述:* @param  * @param null:* @return* @date 9:35 2024/10/28*/public void exportExcel(HttpServletResponse response, List<T> list, Map<String,List<String>> dynamicHeader, String sheetName, String title) {// 设置响应内容类型和字符编码response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("UTF-8");//初始化表格initSheet(list, dynamicHeader, sheetName, title);//创建标题createHead();//写数据createData();try{workbook.write(response.getOutputStream());}catch (Exception e){log.error("导出Excel异常{}", e.getMessage());}finally{IOUtils.closeQuietly(workbook);}}//初始化private void initSheet(List<T> list, Map<String, List<String>> dynamicHeader, String sheetName, String title) {workbook=new XSSFWorkbook();sheet = workbook.createSheet(sheetName);this.list=list;this.dynamicHeader=dynamicHeader;this.title=title;}//创建大标题,和表格标题private void createHead(){// 创建单元格样式CellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中//创建表格标题Row row = sheet.createRow(1);Field[] declaredFields = clazz.getDeclaredFields();Integer cellIndex=0;//固定标题前部分for (Field declaredField : declaredFields) {if (declaredField.isAnnotationPresent(ExcelExport.class)){declaredField.setAccessible(true);ExcelExport attr = declaredField.getAnnotation(ExcelExport.class);if(attr.isFirtst()){row.createCell(cellIndex).setCellValue(attr.value());row.getCell(cellIndex).setCellStyle(cellStyle);cellIndex++;firstFields.add(declaredField);}else{lastFields.add(declaredField);}}}//动态标题部分for (String s : dynamicHeader.keySet()) {row.createCell(cellIndex).setCellValue(s);row.getCell(cellIndex).setCellStyle(cellStyle);cellIndex++;}//固定标题后部分for (Field declaredField : lastFields) {if (declaredField.isAnnotationPresent(ExcelExport.class)){declaredField.setAccessible(true);ExcelExport attr = declaredField.getAnnotation(ExcelExport.class);row.createCell(cellIndex).setCellValue(attr.value());row.getCell(cellIndex).setCellStyle(cellStyle);cellIndex++;}}//创建大标题Row row1 = sheet.createRow(0);row1.createCell(0).setCellValue(title);CellRangeAddress cellRangeAddress = new CellRangeAddress(0, // 第一行索引0, // 最后一行索引0, // 第一列索引cellIndex-1  // 最后一列索引);sheet.addMergedRegion(cellRangeAddress);//设置居中row1.getCell(0).setCellStyle(cellStyle);}private void createData(){Integer rowidex=2;try {for (T t : list) {int cellIndex=0;Row row = sheet.createRow(rowidex);//添加头数据for (Field firstField : firstFields) {firstField.setAccessible(true);Object value = firstField.get(t);row.createCell(cellIndex).setCellValue(value.toString());cellIndex++;}//动态数据for (String s : dynamicHeader.keySet()) {row.createCell(cellIndex).setCellValue(dynamicHeader.get(s).get(rowidex-2));cellIndex++;}//添加尾数据for (Field firstField : lastFields) {firstField.setAccessible(true);Object value = firstField.get(t);row.createCell(cellIndex).setCellValue(value.toString());cellIndex++;}rowidex++;}} catch (IllegalAccessException e) {throw new RuntimeException(e);}}}

ExcelExport类:
package com.ruoyi.common.utils.poi.excel;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelExport {/** 字段名称 */String value();//此标题是否在动态标题前boolean isFirtst() default true;
}

        

http://www.hyszgw.com/news/8453.html

相关文章:

  • 网站开发网站制作baud百度一下
  • 物流网络平台建设狼雨的seo教程
  • 微网站独立域名上海网站推广公司
  • 长春网站建设服务百度推广代理商有哪些
  • 唐山网站公司建设网站四川seo优化
  • 如何做公司网站的软文营销是什么意思
  • 网页在线制作网站源码合肥网络推广
  • 火车头采集Wordpress字段seo的方法
  • wordpress 吧seo推广系统
  • 现在深圳疫情最新消息seo排名赚挂机
  • 买卖信息网站旅游最新资讯 新闻
  • 公安局网站建设的必要性网站seo基本流程
  • 网站设计原则的历史网络推广有哪些
  • 有什么网站可以做微信支付宝支付微商已经被国家定为传销了
  • 做外国美食的视频网站百度网络电话
  • 优化型网站建设软文案例500字
  • 英文seoseo数据优化教程
  • php动态网站开发是干嘛的合肥百度快照优化排名
  • 网站后台管理的超级链接怎么做网络推广计划方案
  • 猫扑网站开发的游戏万网域名购买
  • 做响应式网站的菜单好用吗
  • 网站建设需求单seo怎么收费
  • 仙桃哪里做网站手机360优化大师官网
  • 招投标网站的建设制作厦门seo关键词优化培训
  • 可以做外链的b2b网站建站系统有哪些
  • 企业网站建设定制百度竞价推广开户价格
  • 抖音推广方案seoer是什么意思
  • 做最好的色书网站百度资源站长平台
  • 中文网站建设方案廊坊百度关键词优化
  • 学网站开发哪个好免费下优化大师