Richard.Huang 发表于 2024-2-22 12:30:54

动爸 发表于 2024-2-22 10:21
JAVA 语言可以对 toString进行重写的达到目的的。要是技术上有难度就先把中括号整出来也行吧。总比现在的 ...

是的,Java支持对toString方法进行重写,我们也确实可以做到中括号去除,但是这样做的后果是,会造成我们原本被引用的复选框单元格中的勾丢失,因此为了能够兼容其他的设计,我们目前只能带有中括号的值

对于您的第二个问题,我想您可以通过以下代码来实现
public static void main(String[] args) {
    IWorksheet worksheet = workbook.getWorksheets().get(1);
    IRange usedRange = worksheet.getUsedRange();
    int rowCount = usedRange.getRowCount();
    int columnCount = usedRange.getColumnCount();
    for (int i = 0; i < rowCount; i++) {
      for (int j = 0; j < columnCount; j++) {
            if (worksheet.getRange(i, j).getFormula() != "") {
                for (IRange item : worksheet.getRange(i, j).getPrecedents()) {
                  if (item.getCellType() != null && item.getCellType() instanceof CheckBoxListCellType) {
                        System.out.println(convertToString(worksheet.getRange(i, j).getValue()));
                  }
                }
            }
      }
    }
}
private static String convertToString(Object array) {
    if (array == null) {
      return "";
    }

    StringBuilder sb = new StringBuilder();
    if (array.getClass().isArray()) {
      int length = Array.getLength(array);
      for (int i = 0; i < length; i++) {
            Object element = Array.get(array, i);
            sb.append(convertToString(element));
            if (i < length - 1) {
                sb.append(",");
            }
      }
    } else {
      sb.append(array);
    }

    return sb.toString();
}

动爸 发表于 2024-2-22 13:42:55

Richard.Huang 发表于 2024-2-22 12:30
是的,Java支持对toString方法进行重写,我们也确实可以做到中括号去除,但是这样做的后果是,会造成我们 ...

好的。但是这转换成中括号的数据功能建议你们也要先上。

Richard.Huang 发表于 2024-2-22 15:34:15

本帖最后由 Richard.Huang 于 2024-2-27 18:18 编辑

动爸 发表于 2024-2-22 13:42
好的。但是这转换成中括号的数据功能建议你们也要先上。最新调研进展:该问题已经在V7.0.4中得到修复,待版本发布后可以升级来解决该问题

Ellia.Duan 发表于 2024-3-18 16:59:24

您好,7.0.4版本已发布,您可以下载测试下。
页: 1 [2]
查看完整版本: GcExcel转pdf时,引用复选框单元格内容不正确