Member 7909353 Ответов: 4

как установить обратно основной цвет ячейки листа excel


Я хочу установить bgcolor ячейки листа excel в c# и опцию saveas также.
Я использую ссылку com

using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;

Excel.Application oXL;
            Excel._Workbook oWB;
            Excel._Worksheet oSheet;
            Excel.Range oRng;
          
            try
            {
                //Start Excel and get Application object.
                oXL = new Excel.Application();
              oXL.Visible = true;

                //Get a new workbook.
                oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
                oSheet = (Excel._Worksheet)oWB.ActiveSheet;

                //Add table headers going cell by cell.
                int i = 0;
              
                for (i=0; i <= DateTime.DaysInMonth(Convert.ToDateTime(datestring).Year, Convert.ToDateTime(datestring).Month); i++)
                {
                    if (i == 0)
                    {
                        oSheet.Cells[1, i+1] = "UserName";
                    }
                    else
                    {
                        
                        oSheet.Cells[1, i + 1] = Convert.ToString(i);
                    }
                }oSheet.get_Range("A1", "AF1").Font.Bold = true;
   oRng = oSheet.get_Range("A1", "AF1");
                oRng.EntireColumn.AutoFit();
oSheet.get_Range("A", "D").Font.Background = true;

                
                oWB.Save();

4 Ответов

Рейтинг:
36

Sunny_Kumar_

Привет Член 7909353,

Чтобы задать цвет фона ячейки на листе excel, необходимо задать ее внутренние свойства: см. пример ниже:

Range rng = NewWorkSheet.get_Range("A1:Z1", Missing.Value);
rng.Interior.Color = XlRgbColor.rgbLightSteelBlue;

Здесь, в приведенном выше примере, перечисление "XlRgbColor" предоставляет доступные цветовые коды для листа excel.

Чтобы сохранить как, используйте приведенный ниже синтаксис:
NewWorkSheet.SaveAs("SaveAsFileName.xlsx", XlFileFormat.xlExcel8, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

Надеюсь, это поможет вам достичь поставленной цели. Ответьте на любые разъяснения, Если вам это нужно.

Счастливое Кодирование :)
Sunny_K


Member 7909353

В методе saveas это дает ошибку
Имя "XlFileFormat" не существует в текущем контексте

Member 7909353

это дает ошибку
Имя "XlRgbColor" не существует в текущем контексте

Sunny_Kumar_

проблема должна быть связана с вашей ссылкой. Я предполагаю, что это "использование Microsoft.Офис.Взаимодействие.Excel;" пока вы используете "Excel = Microsoft.Офис.Взаимодействие.Превосходить;"
попробуйте это сделать или обновите ссылки как "Excel.XlRgbColor" ... и все такое.

Sunny_Kumar_

пожалуйста, не забудьте проголосовать и принять в качестве ответа, если это вам помогло.

Member 7909353

Превосходить.XlRgbColor.rgbLightBlue; работает, но я хочу заполнить ячейку, где содержимое равно 5

Sunny_Kumar_

использование вроде этого:
if (((Range)NewWorkSheet.Ячейки[i, j]).значение=="5")
{
((Диапазон)NewWorkSheet.Клетки[i,j]).Интерьер.Цвет = XlRgbColor.rgbLightBlue;
}

вам нужно проверить значение ячейки.

Member 14680349

Это может помочь изменить цвет фона ячейки только тогда, когда файл excel закрыт. Но ничего не могу сделать, когда открывается файл excel. Есть ли лучшее решение?

Рейтинг:
24

Member 7909353

string addrr = GetCellAddress(rownumber, j + 1);
                           oRng = oSheet.get_Range(addrr, addrr);
                           oRng.Interior.Color = Excel.XlRgbColor.rgbLightBlue;


Вызывать эту функцию
public string GetCellAddress(int row, int col)
        {
            StringBuilder sb = new StringBuilder();
            col--;
            if (col < 26)
            {
                sb.Insert(0, (char)('A' + (col % 26)));
                sb.Append(row);
            }
            else
            {
                sb.Append('A');
                sb.Insert(1, (char)('A' + (col % 26)));
                sb.Append(row);
            }
            return sb.ToString();
        }

это даст адрес ячейки


Рейтинг:
2

Imran AS Shaikh

Для Раскрашивания Диапазона Ячеек Excel:

worksheet.Cells["A2:AZ"].interior.color= System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);



Для удаления цвета из диапазона ячеек Excel:

xlWorkSheet1.Range["A2:AZ"].Interior.ColorIndex = 0;


Maciej Los

В каком аспекте ваш ответ лучше принятого решения?

Рейтинг:
0

jwrule

Это сработало идеально для меня.

xlsWorkSheet.Ячейки(строка, столбец).интерьер.Цвет = Цвет.Зеленый