永中office 乱码~~

本文介绍了一种解决Evermore EIOffice (EOI)软件中中文菜单及编辑界面显示问题的方法。通过将特定的字体文件(yzdwsj6.ttf)复制到EOI的JRE库fonts目录下,并修改该文件的权限设置,使得EOI能够正确显示中文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

到原来安装源目录结构中有一个font目录(不是fonts,是font,单数的),里面仅仅有一个字体文件yzdwsj6.ttf,将这个文件copy到已安装的EOI目录./Jre/lib/fonts/下面(我的是采用的默认安装,所以绝对路径是/usr/local/Evermore/EIOffice/Jre/lib/fonts/),修改其属性(sudo chmod a+r+x yzdwsj6.ttf),再打开EOI,反正我的是正常了的,菜单界面的中文都没问题了,编辑的时候也没问题了。

public class RowWriterStrategy implements RowWriteHandler { //分段总数 private Integer segTotalNum; //合并行计数 private int count; //要合并的列 从0开始 private int[] mergeColumnIndex; //已合并单元数 private int mergedTotalCount = 0; public RowWriterStrategy(int[] mergeColumnIndex) { this.mergeColumnIndex = mergeColumnIndex; } public RowWriterStrategy() { } @Override public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Integer rowIndex, Integer relativeRowIndex, Boolean isHead) { } @Override public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) { } @Override public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) { //当前行索引 int curRowNum = row.getRowNum(); if (mergeColumnIndex != null && mergeColumnIndex.length > 0 && !isHead) { //当前行第一列单元格 Cell curA1Cell = row.getCell(0); Object curA1Data = curA1Cell.getCellTypeEnum() == CellType.STRING ? curA1Cell.getStringCellValue() : curA1Cell.getNumericCellValue(); //上一行第一列单元格 Cell preA1Cell = row.getSheet().getRow(curRowNum - 1).getCell(0); Object preA1Data = preA1Cell.getCellTypeEnum() == CellType.STRING ? preA1Cell.getStringCellValue() : preA1Cell.getNumericCellValue(); if (curA1Data.equals(preA1Data)){ count ++; }else { if (count > 0){ for (int i = 0; i < mergeColumnIndex.length; i++) { mergeSomeRow(writeSheetHolder,curRowNum,count,i); } count = 0; } } if (curRowNum == segTotalNum && count > 0){ for (int i = 0; i < mergeColumnIndex.length; i++) { mergeSomeRow(writeSheetHolder,curRowNum + 1,count,i); } } } } /** * 按列合并单元格 * @param writeSheetHolder * @param curRowIndex 当前行索引,有n行固定行就加n * @param needMergeNum 需要合并的行 * @param curColIndex 需要合并的列 */ private void mergeSomeRow(WriteSheetHolder writeSheetHolder, int curRowIndex, int needMergeNum, int curColIndex) { Sheet sheet = writeSheetHolder.getSheet(); try { CellRangeAddress cellAddresses = new CellRangeAddress(curRowIndex - needMergeNum - 1, curRowIndex-1, curColIndex, curColIndex); Field sh = sheet.getClass().getDeclaredField("_sh"); sh.setAccessible(true); XSSFSheet shSheet = (XSSFSheet)sh.get(sheet); CTWorksheet worksheet = shSheet.getCTWorksheet(); CTMergeCells ctMergeCells = mergedTotalCount > 0 ? worksheet.getMergeCells() : worksheet.addNewMergeCells(); CTMergeCell ctMergeCell = ctMergeCells.addNewMergeCell(); ctMergeCell.setRef(cellAddresses.formatAsString()); mergedTotalCount ++; } catch (Exception e) { e.printStackTrace(); } } public Integer getSegTotalNum() { return segTotalNum; } public void setSegTotalNum(Integer segTotalNum) { this.segTotalNum= segTotalNum; } } 这段代码在做单元格合并时,适用于wps,使用永中表格打开时,单元格并没有合并,请问代码要如何改造
最新发布
06-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值