Как я могу удалить все линии сетки в электронной таблице Excel, кроме тех, которые были добавлены мной явно после очистки их всех?
Да, этот вопрос уже задавался, но предоставленный ответ не работает для меня. Чтобы быть более конкретным:
Желая иметь линии сетки только там, где есть данные (которые я добавляю сам), и убрать более светлые линии сетки, которые появляются по умолчанию повсюду, я нашел этот принятый ответ... но он не работает для меня.
Используя этот код для настройки:
using Excel = Microsoft.Office.Interop.Excel;
. . .
private Excel.Application _xlApp;
... эта инициализация компиляции Excel.Application (назначение bool свойству DisplayGridLines _xlApp вне его инициализатора):
_xlApp = new Excel.Application
{
SheetsInNewWorkbook = 1,
StandardFont = "ponceDeLeon",
StandardFontSize = 11
};
_xlApp.Windows.Application.ActiveWindow.DisplayGridlines = false;
... но это (добавление кода в инициализатор) не компилируется (я получаю, "Недопустимый декларатор члена инициализатора" и "Имя" Windows "не существует в текущем контексте"):
_xlApp = new Excel.Application
{
SheetsInNewWorkbook = 1,
StandardFont = "ponceDeLeon",
StandardFontSize = 11,
Windows.Application.ActiveWindow.DisplayGridlines = false
};
... и не компилируется с "Excel". перед "Windows.", хотя кажется, что этого нужно (предлагая импортировать 'Microsoft.Office.Interop.Excel.Windows' и все другие ссылки в файле "). Жалобы компилятора следующие:
An object reference is required for the non-static field, method, or property 'Microsoft.Office.Interop.Excel.Windows.Application.get'"
---а также:
Invalid initializer member declarator
У меня уже есть Microsoft.Office.Interop.Excel.Windows в папке References моего проекта, и фактически я успешно генерирую файл.xlsx. Сейчас я нахожусь в части проекта "gingerbread/finish" (косметика / форматирование).
Даже в случае компиляции кода он на самом деле не работает - он завершается с ошибкой во время выполнения с: "System.NullReferenceException не обработано.... Ссылка на объект не установлена на экземпляр объекта".
Итак, как я могу "стереть с листа" линии сетки и позволить отображать только те, которые я явно применил, на листе?
1 ответ
Вам нужно установить _xlApp.Windows.Application.ActiveWindow.DisplayGridlines = false;
в другое время. Вы должны открыть или создать рабочую книгу, прежде чем устанавливать значение. Тогда все должно работать нормально.
Когда вы открываете существующий Excel-файл:
Excel.Application app = new Excel.Application();
//app.ActiveWindow.DisplayGridlines = false;//Error
Excel.Workbooks workbooks = app.Workbooks;
//app.ActiveWindow.DisplayGridlines = false;//Error
workbooks.Open(filename);
app.ActiveWindow.DisplayGridlines = false;//No Error
При создании нового Excel-файла:
Excel.Application app = new Excel.Application();
Excel.Workbook workbook = app.Workbooks.Add(System.Reflection.Missing.Value);
app.ActiveWindow.DisplayGridlines = false;