繁体   English   中英

将C#与Open XML SDK 2.5结合使用如何将单元格的值单个字符设置为特定的单个字体颜色

[英]using C# with the Open XML SDK 2.5 how can you set a cell's value individual characters to specific individual font colours

我想从当前输出它们的c#自动为我的氨基酸1字母代码上色。

电子表格已正确输出,并且我有一个例如以下示例的列:

A B
1 KJAGLKJGKASLJG
2 FLFSFHDSHDSHHF
3 KJSDALKDJKLFJK
4 KLFDJSHASDFFSD

每个不同的字符都将被分配自己的颜色。 例如,K为红色,L为黄色,D为橙色。 必须使用Open XML SDK而不是Excel COM编程或VBA脚本来完成。

目前,这是单元格的输出方式,但是它们使用默认样式表。

string columnName = AlphabetLetterRollOver((int) columnIndex);
string cellRef = columnName + (rowIndex + 1);
Cell cell1 = new Cell {CellReference = cellRef, StyleIndex = 1U};
cell1.DataType = CellValues.String;
CellValue cellValue1 = new CellValue();
cellValue1.Text = columnValue;
cell1.Append(cellValue1);
row1.Append(cell1);

我尝试将以下代码作为测试用例来实现我想要的功能,但是没有用; 它抛出一个异常:

RunProperties runProperties = new RunProperties();
FontSize fontSize = new FontSize() {Val = 10D};
Color color = new Color() {Rgb = "FF000000"};
RunFont runFont = new RunFont() {Val = "Consolas"};
FontFamily fontFamily = new FontFamily() {Val = 3};

runProperties.Append(fontSize);
runProperties.Append(color);
runProperties.Append(runFont);
runProperties.Append(fontFamily);

Run run = new Run();
Text text = new Text();
text.Text = "A";

run.Append(runProperties);
run.Append(text);

cell1.Append(run);
row1.Append(cell1);

引发的异常如下:

Exception: System.InvalidOperatioonException
Message: Cannot insert the OpenXmlElement "newChild" because it is part of a tree.
Source: DocumentFormat.OpenXml
StrackTrace:    at DocumentFormat.OpenXml.OpenXmlCompositeElement.AppendChild[T](T newChild)
   at DocumentFormat.OpenXml.OpenXmlElement.Append(OpenXmlElement[] newChildren)

任何想法将不胜感激,谢谢!

您需要做的是创建shared strings并将每个字母设置为所需的颜色。 然后将其中许多附加到所需的单元格中。

编辑-

下载OpenXMLSDKToolV25.msi

现在这是窍门,OpenXML生产效率工具正是您所需要的。 它允许您浏览现有的Excel文件并将其分解为CODES: 观看

现在,您需要做的是根据需要手动创建一个Excel工作表。[如果您有多种颜色的文本]然后用生产力工具打开此Excel文件并了解CODE。 请注意,您将需要了解电子表格文件的结构以了解此CODE [请参阅此] 。现在,使用“生产力”工具的代码编写满足您要求的代码。

注意-一旦您使用生产率工具分析了虚拟电子表格,您将理解为什么给出或指导CODE示例作为答案是不实际的。 只需尝试使用带有多色文本的单元格

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM