找回密码
 立即注册

QQ登录

只需一步,快速开始

HungKei

注册会员

1

主题

8

帖子

15

积分

注册会员

积分
15
  • 69

    金币

  • 1

    主题

  • 8

    帖子

最新发帖
HungKei
注册会员   /  发表于:2024-2-4 14:48  /   查看:3718  /  回复:15
1金币
本帖最后由 HungKei 于 2024-2-4 15:03 编辑

当我在Java项目中使用gcexcel库时,我调用excel表格插入数据后转化为图片。我在本地的idea中运行这个功能正常,当我用Jenkins部署到服务器上再运行时,表里面所有的中文都变成了问号。
image.png926070251.png
(此图为本地运行的)
image.png659445800.png
(此图为服务器上运行的)
image.png649687194.png image.png162572630.png image.png242635497.png
我是转为base64值后用一些在线网站翻译成图片,以上是我的核心代码
image.png708510741.png image.png703344421.png
这是服务器上查到的信息
image.png368319091.png

15 个回复

正序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-5 11:34:22
15#
收到。
回复 使用道具 举报
HungKei
注册会员   /  发表于:2024-2-5 11:27:03
14#
本帖最后由 Joestar.Xu 于 2024-2-5 11:34 编辑
Joestar.Xu 发表于 2024-2-5 11:20
您好,看上去这个问题不太好解决,您留一下您的联系方式(或微信),这边跟您沟通一下。

wechat:*********8
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-5 11:20:08
13#
您好,看上去这个问题不太好解决,您留一下您的联系方式(或微信),这边跟您沟通一下。
回复 使用道具 举报
HungKei
注册会员   /  发表于:2024-2-5 10:06:56
12#
Joestar.Xu 发表于 2024-2-5 09:59
您好,另外还需要您提供一下字体相关文件,模板文件也请您提供一下。

字体采用任意中文字体,如:宋体、黑体,都可以。我在本地运行没有问题,项目部署到服务器上生成的就是中文变乱码了

test.rar

54.86 KB, 下载次数: 519

回复 使用道具 举报
HungKei
注册会员   /  发表于:2024-2-5 10:03:54
11#
Joestar.Xu 发表于 2024-2-5 09:50
您好,请通过下图中的方法上传文件:

test.rar (54.86 KB, 下载次数: 444)
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-5 09:59:48
10#
您好,另外还需要您提供一下字体相关文件,模板文件也请您提供一下。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-5 09:50:50
9#
您好,请通过下图中的方法上传文件:


image.png225746764.png

image.png559412536.png

另外,将文件打包为一个压缩包上传可以避免文件类型导致的无法上传的问题。
回复 使用道具 举报
HungKei
注册会员   /  发表于:2024-2-5 09:47:03
8#
Joestar.Xu 发表于 2024-2-5 09:17
您这边提供一下相关的模板文件、数据源和字体文件,我们这边在本地测试一下看看,另外您这边使用的版本是多 ...

似乎无法将文件直接传上来,我这边提供两个相关信息:
1.用于导入的excel表格,内容和格式都没限制,简单中文+英文+数字即可,如下:
image.png256563414.png
2.Java代码:
  1. public String createReportImage(TakeMedicineReportsSaveDTO dto) {
  2.         String excelTemplateFilePath = "src/main/resources/static/template.xlsx";
  3.         String outputImagePath = "src/main/resources/static/output.png";
  4.         String outputPath = "src/main/resources/static/";
  5.         try {
  6.             // 打开工作簿
  7.             Workbook workbook = new Workbook();
  8.             workbook.open(excelTemplateFilePath);

  9.             // 选择工作表
  10.             IWorksheet worksheet = workbook.getWorksheets().get(6);

  11.             TakeMedicineReportsImageVO takeMedicineReportsImageVO = createReportsImageVO(dto);

  12.             // 填充数据
  13.             worksheet.getRange("C4").setValue(takeMedicineReportsImageVO.getName());
  14.             worksheet.getRange("C4").getFont().setName("文泉驿微米黑");
  15.             worksheet.getRange("G4").setValue(takeMedicineReportsImageVO.getSex());
  16.             worksheet.getRange("C5").setValue(takeMedicineReportsImageVO.getAge());
  17.             worksheet.getRange("G5").setValue(takeMedicineReportsImageVO.getPhone());
  18.             worksheet.getRange("I4").setValue(takeMedicineReportsImageVO.getDiagnosis());

  19.             worksheet.getRange("C7").setValue(takeMedicineReportsImageVO.getMedicinalDetail());
  20.             worksheet.getRange("C8").setValue(takeMedicineReportsImageVO.getDosis());
  21.             worksheet.getRange("I8").setValue(takeMedicineReportsImageVO.getMedicationMethod());

  22.             worksheet.getRange("C10").setValue(takeMedicineReportsImageVO.getDecoctingSuggestion());
  23.             worksheet.getRange("I10").setValue(takeMedicineReportsImageVO.getMedicationTemperature());

  24.             worksheet.getRange("J15").setValue(datestampConverter(takeMedicineReportsImageVO.getCreateTime()));

  25. //            //保存为图片
  26. //            FileOutputStream outputStream = new FileOutputStream(outputImagePath);
  27. //            worksheet.toImage(outputStream, ImageType.JPG);
  28. //            outputStream.close();

  29.             //转化为图片base64值
  30.             // Save the worksheet as image to a ByteArrayOutputStream
  31.             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  32.             worksheet.toImage(outputStream, ImageType.JPG);

  33.             // Get the byte array from the ByteArrayOutputStream
  34.             byte[] imageBytes = outputStream.toByteArray();

  35.             // Convert the byte array to Base64 string
  36.             String base64Image = Base64.getEncoder().encodeToString(imageBytes);

  37.             // Close the ByteArrayOutputStream
  38.             outputStream.close();

  39.             return base64Image;



  40.         } catch (Exception e) {
  41.             e.printStackTrace();
  42.             return "";
  43.         }

  44.     }
复制代码

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-5 09:17:13
7#
您这边提供一下相关的模板文件、数据源和字体文件,我们这边在本地测试一下看看,另外您这边使用的版本是多少?
回复 使用道具 举报
HungKei
注册会员   /  发表于:2024-2-4 18:05:45
6#
Joestar.Xu 发表于 2024-2-4 17:52
您按照我上文所述,设置一下字体的文件夹后试试看。

我按照您的建议设置了字体文件夹,还是将中文生成一堆“?”,而英文和数字都没有问题
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部