java解决excel输出为竖向的方法

使用easyExcel的时候,没找到将excel输出为竖向的方式,特此记下excel输出为竖向的方法
注释类

import java.lang.annotation.*;

@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GetName {
    String name() ;
}

controller层

 public void downloadById(String id, HttpServletResponse response, HttpServletRequest request) throws IOException {
        String fileName = "name" + DateUtil.dateToStr(new Date(), SystemConstant.FORMATTER_M);
        String userAgent = request.getHeader(ExportCode.USERAGENT);
        // 解决火狐导出文件名乱码问题
        try {
            if (StringUtils.contains(userAgent, ExportCode.FIREFOX)) {
                fileName = new String(fileName.getBytes(ExportCode.EXPORTCHARACTER), ExportCode.FILENAMECHARACTER);
            } else {
                fileName = URLEncoder.encode(fileName, ExportCode.EXPORTCHARACTER);
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setCharacterEncoding(ExportCode.EXPORTCHARACTER);
        // 设置contentType为excel格式
        response.setContentType(ExportCode.CONTENTTYPE);
        response.setHeader(ExportCode.CONTENT_DIS, ExportCode.HEADFILENAME + fileName + ExportCode.EXCELFORMAT);
        Workbook wb = new HSSFWorkbook(); // 定义一个新的工作簿
        Sheet sheet = wb.createSheet("sheet1");  // 创建第一个Sheet页
        sheet.setColumnWidth(1, 31 * 256);//设置第二列的宽度是31个字符宽度
        sheet.setColumnWidth(0, 31 * 256);
        TStatistics statistics = statisticsService.downloadById(id);
        String json = statistics.getJson();
        StatisticsDto statisticsPageDto = JSONObject.parseObject(json, StatisticsDto.class);
        //得到类的反射对象
        Field[] list = statisticsPageDto.getClass().getDeclaredFields();
        for (int i = 0; i < list.length; i++) {
            Field field = list[i];
            if (field.isAnnotationPresent(GetName.class)) {
                field.setAccessible(true);
                GetName annotation = field.getAnnotation(GetName.class);
                String title = annotation.name();
                String value = "";
                try {
                    value = field.get(statisticsPageDto).toString();
                } catch (Exception ignored) {
                }
                Row row = sheet.createRow(i); // 创建一行
                //此处的要求只是一列标题,另一列为值
                //标题1   value1
                //标题2   value2
                //标题3   value3
                row.createCell(0).setCellValue(title);
                row.createCell(1).setCellValue(value);
                field.setAccessible(false);
            }
        }
        ServletOutputStream fileOut = null;
        try {
            fileOut = response.getOutputStream();
            wb.write(fileOut);
            fileOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值