gpt4 book ai didi

c# - 有没有办法使用 NPOI 从我的 Excel 文档中的十六进制值(例如 '#72fe9c')向单元格添加颜色

转载 作者:行者123 更新时间:2023-12-04 22:28:24 25 4
gpt4 key购买 nike

由于我是 NPOI 新手,我想向 Excel 工作表中的单元格添加颜色。我有一个像“#ffeeff”这样的十六进制值,并且在 ICellStyle.FillForegroundColor 中只能分配短整型值。

System.OverflowException: Value was either too large or too small for an Int16.

我已经尝试过这样的代码并且它正在工作

style.FillForegroundColor = HSSFColor.Grey25Percent.Index;

但是我只有可以转换为int的十六进制值,而且它只支持短int值。

//it is working
style.FillForegroundColor = HSSFColor.Grey25Percent.Index;

// not working for me as '#ffeeff' canot be converted to short, it can only be converted to int
style.FillForegroundColor = short.Parse(fontcolorCode.Substring(1), NumberStyles.HexNumber)

style.FillForegroundColor = short.Parse(fontcolorCode.Substring(1), NumberStyles.HexNumber)

它不应该抛出错误,并且在 Excel 工作表中,必须将相同的颜色(fontcolorCode)应用于单元格

最佳答案

short (Int16) 对于该值来说不够大。采用 int (Int32) 代替:

string myHexColor = "#ffeeff";

int x = int.Parse(myHexColor.Substring(1), NumberStyles.HexNumber);

Console.WriteLine("Color is: " + x); // 16772863
Console.WriteLine("Max short: " + short.MaxValue); // 32767
Console.WriteLine("Max int: " + int.MaxValue); // 2147483647

您必须创建一个颜色对象:

string myHexColor = "#ffeeff";

byte r = Convert.ToByte(myHexColor.Substring(1, 2).ToUpper(), 16);
byte g = Convert.ToByte(myHexColor.Substring(3, 2), 16);
byte b = Convert.ToByte(myHexColor.Substring(5, 2), 16);
Console.WriteLine("{0} = {1}/{2}/{3}", myHexColor, r, g, b);

IWorkbook workbook = null;
NPOI.XSSF.UserModel.XSSFCellStyle style = (NPOI.XSSF.UserModel.XSSFCellStyle)workbook.CreateCellStyle();

// Here we create a color from RGB-values
IColor color = new NPOI.XSSF.UserModel.XSSFColor(new byte[] { r, g, b });

style.SetFillForegroundColor(color );

ICell cellToPaint = null; // Select your cell..
cellToPaint.CellStyle = style;

关于c# - 有没有办法使用 NPOI 从我的 Excel 文档中的十六进制值(例如 '#72fe9c')向单元格添加颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55514395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com