提交 0fee46ce 编写于 作者: C chenjianxing

excel国际化加锁

上级 8853b39d
...@@ -32,8 +32,11 @@ public abstract class EasyExcelListener <T> extends AnalysisEventListener<T> { ...@@ -32,8 +32,11 @@ public abstract class EasyExcelListener <T> extends AnalysisEventListener<T> {
public EasyExcelListener(){ public EasyExcelListener(){
Type type = getClass().getGenericSuperclass(); Type type = getClass().getGenericSuperclass();
this.clazz = (Class<T>) ((ParameterizedType) type).getActualTypeArguments()[0]; this.clazz = (Class<T>) ((ParameterizedType) type).getActualTypeArguments()[0];
this.easyExcelI18nTranslator = new EasyExcelI18nTranslator(this.clazz); //防止多线程修改运行时类注解后,saveOriginalExcelProperty保存的是修改后的值
this.easyExcelI18nTranslator.translateExcelProperty(); synchronized (EasyExcelI18nTranslator.class) {
this.easyExcelI18nTranslator = new EasyExcelI18nTranslator(this.clazz);
this.easyExcelI18nTranslator.translateExcelProperty();
}
} }
/** /**
......
...@@ -24,17 +24,24 @@ public class EasyExcelExporter { ...@@ -24,17 +24,24 @@ public class EasyExcelExporter {
EasyExcelI18nTranslator easyExcelI18nTranslator; EasyExcelI18nTranslator easyExcelI18nTranslator;
public EasyExcelExporter() { private Class clazz;
easyExcelI18nTranslator = new EasyExcelI18nTranslator(TestCaseExcelData.class);
easyExcelI18nTranslator.translateExcelProperty(); public EasyExcelExporter(Class clazz) {
this.clazz = clazz;
//防止多线程修改运行时类注解后,saveOriginalExcelProperty保存的是修改后的值
synchronized (EasyExcelI18nTranslator.class) {
easyExcelI18nTranslator = new EasyExcelI18nTranslator(clazz);
easyExcelI18nTranslator.translateExcelProperty();
}
} }
public void export(HttpServletResponse response, Class clazz, List data, String fileName, String sheetName) { public void export(HttpServletResponse response, List data, String fileName, String sheetName) {
response.setContentType("application/vnd.ms-excel"); response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");
try { try {
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx"); response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");
EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(data); EasyExcel.write(response.getOutputStream(), this.clazz).sheet(sheetName).doWrite(data);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
LogUtil.error(e.getMessage(), e); LogUtil.error(e.getMessage(), e);
throw new ExcelException("Utf-8 encoding is not supported"); throw new ExcelException("Utf-8 encoding is not supported");
...@@ -42,7 +49,6 @@ public class EasyExcelExporter { ...@@ -42,7 +49,6 @@ public class EasyExcelExporter {
LogUtil.error(e.getMessage(), e); LogUtil.error(e.getMessage(), e);
throw new ExcelException("IO exception"); throw new ExcelException("IO exception");
} }
} }
public void close() { public void close() {
......
...@@ -221,8 +221,8 @@ public class TestCaseService { ...@@ -221,8 +221,8 @@ public class TestCaseService {
public void testCaseTemplateExport(HttpServletResponse response) { public void testCaseTemplateExport(HttpServletResponse response) {
EasyExcelExporter easyExcelExporter = null; EasyExcelExporter easyExcelExporter = null;
try { try {
easyExcelExporter = new EasyExcelExporter(); easyExcelExporter = new EasyExcelExporter(TestCaseExcelData.class);
easyExcelExporter.export(response, TestCaseExcelData.class, generateExportTemplate(), easyExcelExporter.export(response, generateExportTemplate(),
Translator.get("test_case_import_template_name"), Translator.get("test_case_import_template_sheet")); Translator.get("test_case_import_template_name"), Translator.get("test_case_import_template_sheet"));
} catch (Exception e) { } catch (Exception e) {
MSException.throwException(e); MSException.throwException(e);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册