Невозможно установить свойство Weight класса Border, невозможно отформатировать границы в c # Excel Interop - PullRequest
0 голосов
/ 28 января 2019

Я не могу установить границу веса ячейки с помощью Excel Interop из C #.Я продолжаю получать сообщение

Невозможно установить свойство Weight класса Border

Это, похоже, влияет только на условия формата.Применение границ к диапазону работает нормально.Вот код вместе с дополнительным классом (который показывает работу диапазонов).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ms = Microsoft.Office.Interop.Excel;

namespace ConsoleApp3
{
class Program
{

    static void Main(string[] args)
    {
        Spreadsheet e = new Spreadsheet();

        e.excel = new ms.Application();
        e.excel.Visible = true;
        e.wb = e.excel.Workbooks.Add(Type.Missing);

        e.sheet = e.wb.ActiveSheet;

        e.sheet.Names.Add("LeftColumn", e.sheet.Range["B2:B7"]);
        e.sheet.Names.Add("RightColumn", e.sheet.Range["D2:D5"]);

        e.sheet.Range["B2"].Value = 1;
        e.sheet.Range["B3"].Value = 1;
        e.sheet.Range["B4"].Value = 2;
        e.sheet.Range["B5"].Value = 2;
        e.sheet.Range["B6"].Value = 2;
        e.sheet.Range["B7"].Value = 2;

        e.AddBorders("LeftColumn");
        e.AddColor("LeftColumn");

        e.AddColor("RightColumn");
        e.AddBorders("RightColumn");

        var formula = "=$B2 <> $B3";
        e.condition = (ms.FormatCondition)
            e.sheet.Range["LeftColumn"].FormatConditions.Add(Type: ms.XlFormatConditionType.xlExpression,
            Formula1: formula
            );

        e.condition.Interior.Color = ms.XlRgbColor.rgbAqua;

        //e.condition.Borders.LineStyle = ms.XlLineStyle.xlContinuous;
        e.condition.Borders[ms.XlBordersIndex.xlEdgeTop].Weight = ms.XlBorderWeight.xlMedium;
        e.condition.Borders[(ms.XlBordersIndex)ms.Constants.xlTop].Weight = ms.XlBorderWeight.xlMedium;

        e.condition.Priority = 15;


    }

}
}

// ------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using e = Microsoft.Office.Interop.Excel;


namespace ConsoleApp3
{
public class Spreadsheet
{
    public e.Application excel = null;
    public e.Workbooks workbooks = null;
    public e.Workbook wb = null;
    public e.Sheets sheets = null;
    public e.Worksheet sheet = null;
    public e.Range range = null;
    public e.Range subrange = null;
    public e.FormatCondition condition = null;
    internal object XlBordersIndex;

    internal void AddColor(string rng)
    {
        sheet.Range[rng].Interior.Color = 10092543;
    }

    internal void AddBorders(string rng)
    {
        // This next line is only here because I saw an internet response that said the line would fix the problem
        // But unfortunately it didn't.
        // sheet.Range[rng].Interior.ColorIndex = e.XlColorIndex.xlColorIndexNone;

        //sheet.Range[rng].Interior.Pattern = e.XlPattern.xlPatternNone;
        sheet.Range[rng].Borders[e.XlBordersIndex.xlEdgeLeft].Weight = e.XlBorderWeight.xlMedium;
        sheet.Range[rng].Borders[e.XlBordersIndex.xlEdgeRight].Weight = e.XlBorderWeight.xlMedium;
        sheet.Range[rng].Borders[e.XlBordersIndex.xlEdgeTop].Weight = e.XlBorderWeight.xlMedium;
        sheet.Range[rng].Borders[e.XlBordersIndex.xlEdgeBottom].Weight = e.XlBorderWeight.xlMedium;
    }

}

}

Примечание: обе эти строки терпят неудачу, но я включил их обе только потому, что ...

e.condition.Borders[ms.XlBordersIndex.xlEdgeTop].Weight = ms.XlBorderWeight.xlMedium;

и

e.condition.Borders[(ms.XlBordersIndex)ms.Constants.xlTop].Weight = ms.XlBorderWeight.xlMedium;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...