Добавление надстройки для excel на языке C#
Я пытаюсь сделать надстройку C# Excel, чтобы автоматизировать вычисление значения некоторых ячеек.Что должен делать аддин, так это когда флажок установлен, он должен умножить значение ячейки с другими ячейками и вставить результат в разные ячейки.Ошибка, которую я получаю, заключается в том, что "не удается преобразовать null в int, потому что это не тип значения, не допускающий обнуления".Когда Excel открывается, я ставлю цифры, и после того, как я ставлю галочку в этом поле, я получаю эту ошибку.Из того, что я понимаю, эта строка кода получает null из Excel:
int cellValue = sheet.Cells[1, 12].Value2;
Я попытался в первом варианте своего кода открыть конкретную книгу Excel, но это не сработало.Он открывает новый пустой файл Excel.Устранение
var excelApp = new Excel.Application() as Excel._Application;
также появляется новая ошибка:
Цитата:Ссылка на объект необходима для метода или свойства нестатического поля.
Что я уже пробовал:
Я попробовал это 2 варианта.Я получаю ту же ошибку.
public void fc(string[] args) { string dataFilePath = new FileInfo(args[0]).FullName; string excelTemplateFilePath = Path.Combine( Path.GetDirectoryName(dataFilePath), "informations.xlsx"); var excelApp = new Excel.Application() as Excel._Application; Excel.Workbook workbook = excelApp.Workbooks.Open(excelTemplateFilePath); Excel.Worksheet worksheet = workbook.Sheets[1]; var dataRange = worksheet.get_Range("A20"); dataRange.Value2 = 0.5; string baseFileName = Path.Combine( Path.GetDirectoryName(dataFilePath), Path.GetFileNameWithoutExtension(dataFilePath)); string excelFilePath = baseFileName + ".xlsx"; for (int i = 0; i <= worksheet.Cells.Count; i++) { for (int j = 0; j <= worksheet.Cells.Count; j++) { while (worksheet.Cells[i+1, 7] != null) { (worksheet.Cells[i+1, 8] as Excel.Range).Value2 = worksheet.Cells[i+1, 7] * dataRange.Value2; } } } System.Diagnostics.Process.Start(excelFilePath); }
if (((RibbonCheckBox)sender).Checked) { try { Excel.Application app = new Excel.Application(); app.Workbooks.Add(); Excel.Worksheet sheet = app.ActiveSheet; int cellValue = sheet.Cells[1, 12].Value2; for (int i = 0; i <= sheet.Cells.Count; i++) { for (int j = 0; j <= sheet.Cells.Count; j++) { while (sheet.Cells[i + 1, 7] != null) { sheet.Cells[i + 1, 8].Value2 = sheet.Cells[i + 1, 7] * cellValue; } } } } catch(Exception ex) { MessageBox.Show("Exceptie:" + ex); }