Я не могу установить границу веса ячейки с помощью 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;