我想对我的氨基酸进行着色,从目前输出氨基酸的c#中自动输入一个字母代码。
电子表格的输出是正确的,我有一个列,如下例所示:
A B
1 KJAGLKJGKASLJG
2 FLFSFHDSHDSHHF
3 KJSDALKDJKLFJK
4 KLFDJSHASDFFSD
每一个不同的人物都会被赋予自己的颜色。例如,K是红色的,L是黄色的,D是橙色的。这必须使用Open,而不是Excel编程或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)
任何想法都将不胜感激,谢谢!
发布于 2014-12-10 15:12:18
您需要做的是创建shared strings
,并将每个字母设置为所需的颜色。然后把它们中的多少附加到你想要的细胞里。
编辑-
现在是诀窍,OpenXML生产力工具是您需要的。它允许您对现有的Excel文件眉毛,并将其分解为代码:观看
现在,您需要做的是手动创建一个Excel表,在您的示例中使用多个colur文本,然后使用生产力工具打开这个Excel文件,并理解代码。请注意,您需要了解电子表格文件结构才能理解此代码提交[这个]。现在编写您的代码以满足您的要求使用代码的生产力工具
注:一旦您使用生产力工具分析了虚拟电子表格,您就会理解为什么给出或指导代码示例作为答案是不实际的。试着用一个带有多色文本的单元格
https://stackoverflow.com/questions/27254018
复制相似问题