Richtext 接口

Richtext 接口代表具有多种格式的文本内容,包含多个文本段,每个文本段可以具有不同的样式属性。

class oo::iRichtext

管理具有多个格式段的富文本内容的接口。

文本信息

int segments_num() const

获取富文本中的文本段数量。

返回:

文本段数量

const char *plain_text() const

获取不带格式的完整的朴素文本内容。

返回:

纯文本内容

文本段访问

const char *text(int index, iStyle **style = nullptr) const

获取特定段的文本和样式。

参数:
  • index -- 段索引(基于 0)

  • style -- 存储样式对象指针的指针(可选)

返回:

段的文本内容

备注

如果提供了 style 参数且该段有样式,将存储样式。

文本内容修改

void append(const char *s, iStyle *style = nullptr)

向富文本追加新的文本段。

参数:
  • s -- 要追加的文本内容

  • style -- 应用于新段的样式(可选)

void insert(int index, const char *s, iStyle *style = nullptr)

在指定位置插入新的文本段。

参数:
  • index -- 插入位置(0-based)

  • s -- 要插入的文本内容

  • style -- 应用于新段的样式(可选)

void remove(int index)

移除文本段。

参数:

index -- 要移除的段索引(0-based)

void modify(int index, const char *s, iStyle *style = nullptr)

修改现有的文本段。

参数:
  • index -- 要修改的段索引(0-based)

  • s -- 新的文本内容

  • style -- 要应用的新样式(可选,nullptr 保持现有样式)

资源管理

void release()

释放富文本对象并清理相关资源。

备注

当不再需要 Richtext 对象时应调用此方法,以释放内存。

使用示例

#include "oosxl.hxx"

// Create rich text object
oo::iRichtext* richText = workbook->make_richtext();

// Create styles for different segments
oo::iStyle* boldStyle = workbook->make_normal_style();
boldStyle->set_bold(true);
boldStyle->set_font_size(14);

oo::iStyle* redStyle = workbook->make_normal_style();
redStyle->set_font_color(RGB(255, 0, 0));
redStyle->set_italic(true);

// Add formatted segments
richText->append("This is ", nullptr);  // Normal text
richText->append("bold", boldStyle);    // Bold text
richText->append(" and ", nullptr);     // Normal text
richText->append("red italic", redStyle); // Red italic text

// Apply to cell
worksheet->set_richtext(0, 0, richText);

// Get information about segments
int segmentCount = richText->segments_num();
for (int i = 0; i < segmentCount; ++i) {
    oo::iStyle* segmentStyle = nullptr;
    const char* text = richText->text(i, &segmentStyle);
    // Process segment...
}

// Get plain text
const char* plainText = richText->plain_text();
// plainText = "This is bold and red italic"

// Clean up
boldStyle->release();
redStyle->release();
richText->release();