我正在使用Windows应用程序。我需要弄清楚如何突出显示不同颜色和数据的数据。 Excel中的样式。我正在使用C#将数据导出到excel。
这是我用于将DataTable导出到Excel中的代码,
private void btnExportexcel_Click(object sender, EventArgs e)
{
oxl = new Excel.Application();
oxl.Visible = true;
oxl.DisplayAlerts = false;
wbook = oxl.Workbooks.Add(Missing.Value);
wsheet = (Excel.Worksheet)wbook.ActiveSheet;
wsheet.Name = "Customers";
DataTable dt = clsobj.convert_datagrid_orderlist_to_datatable(dvgorderlist);
int rowCount = 1;
foreach (DataRow dr in dt.Rows)
{
rowCount += 1;
for (int i = 1; i < dt.Columns.Count + 1; i++)
{
// Add the header the first time through
if (rowCount == 2)
{
wsheet.Cells[1, i] = dt.Columns[i - 1].ColumnName;
}
wsheet.Cells[rowCount, i] = dr[i - 1].ToString();
}
}
range = wsheet.get_Range(wsheet.Cells[1, 1],
wsheet.Cells[rowCount, dt.Columns.Count]);
range.EntireColumn.AutoFit();
}
wsheet = null;
range = null;
}
答案 0 :(得分:7)
您需要获取单元格或范围的“内部”对象并在其上设置颜色。
Range cellRange = (Range)wsheet.Cells[rowCount, i];
cellRange.Interior.Color = 255;
Excel颜色是一个整数序列,因此您必须计算所需颜色的值。您可能会发现此方法很有用:
public static int ConvertColour(Color colour)
{
int r = colour.R;
int g = colour.G * 256;
int b = colour.B * 65536;
return r + g + b;
}
然后你可以这样做:
cellRange.Interior.Color = ConvertColour(Color.Green);
您可以使用.font属性设置文本样式:
cellRange.Font.Size = "20";
cellRange.Font.Bold = true;
还有其他属性,例如Color
,Italic
和Underline
,您可以使用它们来获得所需的样式。
答案 1 :(得分:0)
我意识到我已经晚了十年,但是作为Simon的自定义ConvertColour方法的一种更简单的替代方法,您还可以使用System.Drawing
命名空间中的ColorTranslator.ToOle方法。
例如,对指定范围进行黄色突出显示的单线将是:
range.Interior.Color = ColorTranslator.ToOle(Color.Yellow);