1

我正在使用 GemBox 电子表格导出数据,我需要将单元格中的文本格式化为具有多种颜色。

这在 Excel 中是可能的(在 StackOverflow 上找到):

Dim fixedLength As Long
fixedLength = Len("Employee")
ActiveCell.FormulaR1C1 = "Employee Some Employee"
With ActiveCell.Characters(Start:=fixedLength + 2, Length:=Len(ActiveCell) - FixedLength - 1).Font
    .Color = vbRed
End With

但是,我可以在 GemBox 类中找到的只是设置 Style.Font.Color 属性,这会影响整个单元格。
例子:

for (int i = 0; i < tempArray.GetUpperBound(0); i++)
{
    Color backColour = ColorTranslator.FromHtml(tempArray[i+1]);
    ws.Cells[row, col].Value += tempArray[i] + Environment.NewLine;
    ws.Cells[row, col].Style.Font.Color = backColour;
    i++;
}

GemBox 可以吗?

GemBox 电子表格专业版 3.5 for .NET 4.0
v4.0.30319
v35.3.40.1000

4

2 回答 2

0

我知道这个问题很老,但几年前我通过电子邮件询问了开发人员。他们说这是不可用的。

如果您直接向他们发送电子邮件,他们通常会在一个工作日内回复。我认为他们在捷克共和国。

您可以在此处向他们开具支持票

在同一页面上还有一个反馈选项卡,您可以在其中建议他们将其添加为功能,其他开发人员可以对要添加的功能进行投票。

于 2014-06-12T04:25:20.370 回答
0

当前版本的 GemBox.Spreadsheet(3.9 版)对此有 API 支持,请参阅Excel 内联文本格式示例

简而言之,您需要的是使用GetCharacters方法,例如:

int row = 0;
int col = 0;
var tempArray = new string[] {
    "First Value",
    "Red",
    "Second Value",
    "Green",
    "Third Value",
    "Blue"
};

ws.Cells[row, col].Value = string.Concat(
    tempArray.Select((tempItem, i) => i % 2 == 0 ? tempItem : Environment.NewLine));

int charStartIndex = 0;
for (int i = 0; i < tempArray.Length; i+=2)
{
    string value = tempArray[i];
    SpreadsheetColor color = ColorTranslator.FromHtml(tempArray[i + 1]);

    ws.Cells[row, col].GetCharacters(charStartIndex, value.Length).Font.Color = color;
    charStartIndex += value.Length + Environment.NewLine.Length;
}

这是结果:

具有多种颜色的 Excel 单元格值

于 2015-06-01T08:30:44.147 回答