我用 C# (.net 2003) 操作 excel ,修改 excel 单元格背景色,问题是C#使用ColorIndex修改的值和 VBA 中不一样, 比如 ,在 excel 中使用宏得知土黄色是 44,但在 C# 中做 ColorIndex = 44 操作;得到的结果却是黄色。我还用如下代码输出了所以的56种颜色,但没有发现土黄色,还有其它的一些颜色也没有.不知是怎么回事。我分不多,只有21分了。请各位高手帮帮忙
private bool convertExcelFile(string filepath)
{
    System.Reflection.Missing mis = System.Reflection.Missing.Value;
    Microsoft.Office.Interop.Excel.Application xlApp = null;
    Microsoft.Office.Interop.Excel.Workbook xlBook;
    Microsoft.Office.Interop.Excel.Worksheet ws;
    try
    {
xlApp = new Microsoft.Office.Interop.Excel.Application();
xlApp.DisplayAlerts = false;
xlBook = xlApp.Workbooks.Open(filepath, 0, false, mis, mis,mis,mis,mis,mis,mis,mis,mis,mis,mis,mis);
ws = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets[1];
int rowcount = ws.UsedRange.Rows.Count;
int colcount = ws.UsedRange.Columns.Count;
string errorMess = "";
for(int i=1;i<=250;i++)
{
              try
    {
Range r = (Range)ws.Cells[i,1];
r.Interior.ColorIndex = i;
              }
              catch(Exception ex)
              {
errorMess += ex.Message;
              }
          }
 ws.SaveAs(filepath,Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel4Workbook,Type.Missing,Type.Missing,false,false,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
   xlBook.Save();
xlApp.Quit();
xlBook = null;
ws = null;
GC.Collect();
       }
       catch(Exception ex)
       {
           if(xlApp != null) xlApp.Quit();
  xlApp.Quit();
  xlBook = null;
  ws = null;
  GC.Collect();
  MessageBox.Show(ex.Message);
  return false;
        }
     return true;
}

解决方案 »

  1.   

    调整ColorIndex ,会改变颜色,不注意这么细过
      

  2.   

    用colorpick这种工具获得你想要颜色的rgb值,后面怎么做你懂得
      

  3.   

    **.Color = RGB(0, 255, 0)
    可以试试这个
      

  4.   

    问题我已经找到了,和 ColorIndex 没有任何关系。也不存在赋值错的原因。是打开的 excel 文件有问题。这不是个真正的 excel 文件,是一个 txt 文档。使用 \t 这类的编码,然后直接修改了后缀名而已。存储为 Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel4Workbook 时,颜色会丢失。
      

  5.   

    设置forecolor
    Color color=Color.FromName(ColorName);
    color=Color.FromArgb(color.B,color.G,color.R);
    ExcelWorkSheet.get_Range(ExcelWorkSheet.Cells[SelectedStartRow,SelectedStartCol],ExcelWorkSheet.Cells[SelectedEndRow,SelectedEndCol]).Font.Color=color.ToArgb();本文来自: 站长(http://www.qqcf.com) 详细出处参考:http://study.qqcf.com/web/714/197760.htm
      

  6.   

    用這個吧,很方便的網站
    my blog
    http://ufo-crackerx.blog.163.com/