电子表格ML文本颜色(颜色)渲染

我正在编写一个工具来生成一些Spreadsheet ML(XML)来为我的用户创build一个Excel电子表格。

我定义了一个风格如下:

 <样式ss:ID =“GreenText”>
   <Font ss:FontName =“Arial”ss:Size =“9”ss:Color =“#8CBE50”/>
 </样式>

这在一定程度上是有效的,但是当我在Excel中打开它时,为文本呈现的颜色不是我指定的颜色 – 这是更明亮的版本。 我可以对单元格边框使用相同的颜色参考,并且颜色呈现正确。

任何人都可以摆脱为什么文字颜色不正确呈现的任何灯光?

谢谢!

大卫是正确的,Excel 2003和以前版本的Excel被限制为56色调色板。

Excel 2007增加了对24位颜色以及主题颜色的支持。 Excel 2007可以编写包含这些附加颜色信息以及Excel 2003可以读取的xls工作簿,但是Excel 2003仍将限制为56色调色板。 Excel 2007可以加载这些工作簿并显示确切的颜色。

SpreadsheetGear for .NET支持新的24位颜色和主题颜色,以及旧的调色板索引颜色,就像Excel 2007一样。 您可以使用SpreadsheetGear创build一个24位颜色的工作簿,该工作簿将在Excel 2007中正确显示,或者修改调色板,并在Excel 2007和Excel 2003中正确显示。下面是两个示例。

你可以在这里下载一个免费的试用版,并自己试用。

免责声明:我自己的SpreadsheetGear LLC

这里是示例代码:

// Create a new empty workbook with one worksheet. IWorkbook workbook = Factory.GetWorkbook(); // Get the worksheet and change it's name to "Person". IWorksheet worksheet = workbook.Worksheets[0]; worksheet.Name = "Colors"; // Put "Hello World!" into A1. IRange a1 = worksheet.Cells["A1"]; a1.Value = "Hello World!"; a1.Font.Color = System.Drawing.Color.FromArgb(0x8C, 0xBE, 0x50); // Save the workbook as xls (Excel 97-2003 / Biff8) with default palette. // // This workbook will display the exact color in Excel 2007 and // SpreadsheetGear 2009, but will only display the closest available // palette indexed color in Excel 2003. workbook.SaveAs(@"C:\tmp\GreenDefaultPalette.xls", FileFormat.Excel8); // Save as xlsx / Open XML which will also display the exact color. workbook.SaveAs(@"C:\tmp\GreenDefaultPalette.xlsx", FileFormat.OpenXMLWorkbook); // Now, modify the palette and save. This workbook will display the exact // color in Excel 2003 as well as in SpreadsheetGear 2009 and Excel 2007. // // Note that modifying the palette will change the color of any cells which // already reference this palette indexed color - so be careful if you are // modifying pre-existing workbooks. workbook.Colors[0] = a1.Font.Color; workbook.SaveAs(@"C:\tmp\GreenModifiedPalette.xls", FileFormat.Excel8); 

Excel仅限于56种颜色的调色板。 它只存储颜色索引,而不是实际的RGB值。 他们确实允许调色板中的自定义颜色,但我不知道如何以编程方式更改它们

编辑:
我没有使用办公室的XML文件,但这可能会有所帮助(indexedColors标签定义调色板):
http://openxmldeveloper.org/forums/thread/309.aspx

还有一个Workbook.Colors属性用于从VBA中更改调色板。