2016-08-31 8 views
0

Фон: Мне нужно окрасить камеру экстраселе в красный или зеленый цвет. Если ячейка больше нуля, мне нужно покрасить ячейку зеленым цветом (справа от середины ячейки), если ячейка меньше нуля, мне нужно покрасить ячейку красным цветом (слева направо от середины ячейки).Как окрасить половину ячейки excel?

Я использую библиотеку Microsoft.Office.Interop.Excel.

Как это сделать?

P.S. Cell color changing In Excel using C# не является дубликатом, потому что я хочу покрасить только половину ячейки excel, а не полную.

+0

вы можете сделать это с помощью VBA смотрите здесь [VBA] (https: //newtonexcelbach.wordpress. com/2008/11/11/drawing-in-excel-7-creation-drawings-from-coord /) или [здесь] (http://wellsr.com/vba/2015/excel/draw-lines-or- arrows-between-cells-with-vba /) – schoetbi

+0

Возможный дубликат [Изменение цвета ячеек в Excel с использованием C#] (http: // stackoverflow.com/questions/2452417/cell-color-change-in-excel-using-c-sharp) – Martheen

+0

@Martheen Я хочу, чтобы цвет был только половиной ячейки excel, а не полной. –

ответ

3

Этот а) может быть обманом (б) возможно лучше в качестве комментария (но тогда не было бы изображения) и (c) возможно растягивание значения тега [excel] здесь, но может представлять определенный интерес отметить, что CF может достичь чего-то в этом роде:

SO39243927 first example

ColumnB (красный Заливка) был отформатирован с формулой правила:

=$B1<0 

и ColumnC (зеленая заливка) с формулой правила от:

=$B1>0 

Обманом является то, что B: C были уменьшены по ширине и отформатированы по центру.

Что-то очень смутно подобные с инфокривыми:

SO39243927 second example

В комментарии (с ссылкой на изображение) @BrakNicku отметил, что Bars данные может быть применена (и изображение, а доказывает, что возможно полупополнение ячейки Excel цветом). Разновидность, также Панели данных, должны иметь длину, пропорциональную базовую величину:

SO39243927 third example

+0

Можете ли вы сказать, как это сделать, используя C#? –

+0

@ h.o.m.a.n Я не очень разбираюсь в скриптах на любом языке. – pnuts

+2

Можно также имитировать это форматирование с помощью CF-баров данных (оба минимальные и максимальные установлены на 0) [образец] (http://i.imgur.com/wGQFMlY.png) – BrakNicku

1

Для того, чтобы решить эту проблему, я использовал данную схему:

  1. Создание макросов в VBA (по используя мышь).
  2. Перепишите макросы в общую форму.
  3. Сохраните макросы в приложении C#.
  4. Сохраните макросы в файле excel (xlsm) на C#.
  5. Запуск макросов с C#.

Данный макрос:

Sub CreateGistograms(r As String) 
    Range(r).Select 
    Selection.FormatConditions.AddDatabar 
    Selection.FormatConditions(Selection.FormatConditions.Count).ShowValue = True 
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
    With Selection.FormatConditions(1) 
     .MinPoint.Modify newtype:=xlConditionValueAutomaticMin 
     .MaxPoint.Modify newtype:=xlConditionValueAutomaticMax 
    End With 
    With Selection.FormatConditions(1).BarColor 
     .Color = 8700771 
      .TintAndShade = 0 
     End With 
     Selection.FormatConditions(1).BarFillType = xlDataBarFillGradient 
     Selection.FormatConditions(1).Direction = xlContext 
     Selection.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor 
     Selection.FormatConditions(1).BarBorder.Type = xlDataBarBorderSolid 
     Selection.FormatConditions(1).NegativeBarFormat.BorderColorType = _ 
      xlDataBarColor 
     With Selection.FormatConditions(1).BarBorder.Color 
      .Color = 8700771 
     .TintAndShade = 0 
    End With 
    Selection.FormatConditions(1).AxisPosition = xlDataBarAxisAutomatic 
    With Selection.FormatConditions(1).AxisColor 
     .Color = 0 
     .TintAndShade = 0 
    End With 
    With Selection.FormatConditions(1).NegativeBarFormat.Color 
     .Color = 255 
     .TintAndShade = 0 
    End With 
    With Selection.FormatConditions(1).NegativeBarFormat.BorderColor 
     .Color = 255 
     .TintAndShade = 0 
    End With 
End Sub 

Как сохранить макрос и запустить его из C# create macro at runtime in dotnet

+0

Тик "означает, что автор получил ответ, который сработал для него лично ». Если бы я смог, я бы переместил его сюда (хотя мысль оценивается!). Любой другой кредит должен идти на @BrakNicku - может быть, посмотрите на некоторых из этих пользователей другие ответы? ;) – pnuts

+0

@pnuts На основании вашего сообщения (вы предоставили фотографии wondefurl) и комментария BrakNicku, я решил использовать макросы vba для окраски половины ячейки excel и запускать ее через C#. –

+0

Я думаю, что мой пост был просто толчком в правильном направлении (и поэтому должен был быть комментарием, но, как уже упоминалось, мне нужны изображения) и что вы сделали всю настоящую работу. Тем не менее, тик полностью по вашему усмотрению, так что спасибо! – pnuts