alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
32.3k stars 7.51k forks source link

有个返回值0~50字样,导出的时候总是变成了0-50 这个是什么原因 #3251

Closed wenchaomartin closed 1 year ago

wenchaomartin commented 1 year ago

建议先去看文档

快速开始常见问题

触发场景描述

触发Bug的代码


    @ExcelProperty(value = "销量标签", index = 6)
    private String saleQtyTagStr;
   这里写代码

返回的是 saleQtyTagStr =0~50盒 但是导出excel 是0-50盒 ~ 有转换-?

提示的异常或者没有达到的效果

大家尽量把问题一次性描述清楚,然后贴上全部异常,这样方便把问题一次性解决掉。 至少大家要符合一个原则就是,能让其他人复现出这个问题,如果无法复现,肯定无法解决。

gongxuanzhang commented 1 year ago

可能是excel转换的 检查一下excel打开之后的格式有没有换了

gongxuanzhang commented 1 year ago

我这里是正常的,没法复现你的问题。 ~也没有转换成- 要不你帖全代码,如果我这里都正常就是你的问题啊

gongxuanzhang commented 1 year ago

提问题你不给代码,我这里不能复现,我要你个代码有什么问题吗? 你是不是觉得社区有义务回答你问题?

你来这里提issue是为了解决问题还是为了教我怎么说话 如果你想解决问题,上代码,描述清楚问题,你给的两行字我没办法复现,我应该怎么回答你 如果不知道怎么提问可以移步 https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way 学习一下

如果你就是来吵架或者是教我怎么说话,那我的回答是不用你教我,我也没时间跟你吵架。

gongxuanzhang commented 1 year ago

我通过你的两句话描述尝试复现,没有成功. 你PC的excel软件可能有奇奇怪怪的设置,有的格式错误的另存为一下就能纠正了。 很多问题可能是在你打开的excel的时候发生的,所以我说看一下excel格式是不是改了。 你笃定你没错那就帮我复现问题,我帮你解决问题。 你这是领导当惯了让员工给你解决问题不如心意就开喷吗

wenchaomartin commented 1 year ago

version easyexcel 2.26


package com.gangling.ccvs.service.union;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class TestExcel {
    private static final Logger log = LoggerFactory.getLogger(TestExcel.class);

    private static final String LINUX_PATH = " \\app\\download\\";

    private static String WINDOWS_PATH = "d:\\download\\";

    @Test
    public void testGenerateExcel() {
        ExcelDTO testDTO = new ExcelDTO();
        testDTO.setTag("12~盒");
        List<ExcelDTO> excelDTOS = new ArrayList<>();
        excelDTOS.add(testDTO);
        write("123", ExcelDTO.class, "123", excelDTOS);
    }

    public File write(String excelName, Class clazz, String sheetName, List<ExcelDTO> result) {
        File originalFile = null;
        try {
            File file = new File(getDir());
            if (!file.exists()) {
                file.mkdirs();
            }
            // 文件输出位置
            OutputStream out = new FileOutputStream(getDir() + excelName + ExcelTypeEnum.XLSX.getValue());
            ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX);
            WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).head(clazz).build();
            writer.write(result, writeSheet);
            writer.finish();
            out.close();
            originalFile = new File(getDir() + excelName + ExcelTypeEnum.XLSX.getValue());

        } catch (Exception e) {
            e.printStackTrace();
            log.error("生成excel发生错误 ", e);
        }
        return originalFile;

    }

    public String getDir() {
        String os = System.getProperty("os.name").toLowerCase();
        if (os.contains("windows")) {
            return WINDOWS_PATH;
        } else {
            return LINUX_PATH;
        }

    }

     class ExcelDTO implements Serializable {

        @ExcelProperty(value = "标签", index = 0)
        private String tag;

        private static final long serialVersionUID = 1L;

        public String getTag() {
            return tag;
        }

        public void setTag(String tag) {
            this.tag = tag;
        }
    }
}

 @zhuangjiaju