当前位置: 首页 > 知识库问答 >
问题:

如果多个工作表包含RichText,则在将它们组合成一个工作簿时,RichText单元格从工作表2开始显示为空白

容修贤
2023-03-14

我有多个Excel工作表,每个工作表包含很少的RichText单元格,但当我使用poi-ooxml将所有Excel工作表合并到一个工作簿中时,第一个工作表会正确显示,但在随后的工作表中,我们丢失了RichText单元格值,单元格显示为空白。

共有1个答案

鞠子轩
2023-03-14
This issue is now fixed for me.
i have added below lines of code when relationship type is Shared String ("http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"

):

sd = SstDocument.Factory.parse(p.getInputStream());
    targetsd = SstDocument.Factory.parse(partTarget.getInputStream());
    List<CTRst> ctRstArray = sd.getSst().getSiList();
    String sharedString = null;
    for (CTRst ctRst : ctRstArray) {
        if(ctRst.getRList() != null && ctRst.getRList().size()>0){
            List<CTRElt> rList = ctRst.getRList();
            targetsd.getSst().addNewSi().getRList().addAll(rList);
        }else if(ctRst.getRPhList() != null && ctRst.getRPhList().size() > 0){
            List<CTPhoneticRun> rphList = ctRst.getRPhList();
            targetsd.getSst().addNewSi().getRPhList().addAll(rphList);
        }else {
            sharedString = ctRst.getT();
            CTRst ctrst = targetsd.getSst().addNewSi();
            ctrst.setT(sharedString);
        }
    }



earlier the lines of code was:

sd = SstDocument.Factory.parse(p.getInputStream());
    targetsd = SstDocument.Factory.parse(partTarget.getInputStream());
    List<CTRst> ctRstArray = sd.getSst().getSiList();
    String sharedString = null;
    for (CTRst ctRst : ctRstArray) {

            sharedString = ctRst.getT();
            CTRst ctrst = targetsd.getSst().addNewSi();
            ctrst.setT(sharedString);               
    }
 类似资料:
  • 所以我有 1500 个 Excel 工作簿,每个工作簿都有 10 张结构完全相同的工作表。我尝试将多个Excel工作簿合并到一个文件中,并使用以下代码成功: 谢谢,努尔贝克

  • 我有一个Excel工作簿,其中包含36个不同的工作表,我每两周收到一次,工作表在所有标签上都有共同的标题,并且每个标签上都有不同的唯一标题,但每条记录都有一个唯一的ID,可以有多个记录。 我要做的是从所有的工作表中提取唯一的id,然后将每个工作表中的数据提取到一个工作表中,其中包含所有的公共标题和唯一标题。 我正在考虑使用下面帖子中的代码将其导入Access。连接表并将其导出回Excel中的一个工

  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

  • 我知道如何复制工作表,但这将导致多个工作表。我需要的是一个输出工作表,一个接一个地包含所有的工作表。 目前我正在做的是将每个工作表导出为< code>DataTable,然后逐个导入: 但这样,我就失去了单元格样式和文本格式 有没有办法用保留样式?

  • 我得到了这个错误: 工作簿已包含此名称的工作表 行应该检查工作簿是否已经包含此名称的工作表,但它不工作。我仍然有错误。 谢谢你的帮助!

  • 我对宏是新手,需要帮助。我在一个文件夹中有几个工作簿,每个工作簿有四个工作表。现在我想要一个mocro它复制数据从每个工作簿(工作表明智)和过去在我的主工作簿(工作表明智)意味着数据1应该被粘贴一个在另一个下面在我的主工作簿在工作表1和工作表2分别。*工作簿名称可以是文件夹中的任何东西。有人能帮我完成整个代码吗?我有宏从一张表到我分配的表的数据,但它复制粘贴数据从打开的表,而不是按表名明智的。有人