Если я ввожу workbook = application.Workbooks.Open(System.IO.Path.Combine(Environment.CurrentDirectory, "Files\\Таблица для расчетов.xlsx")); то у меня как раз и возникает ошибка, но если я в воду абсолютный путь: C:\\... Files\Таблица для расчетов. xlsx то ошибка проподает
using System;
using System.Globalization;
using System.IO;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace Таблица_для_расчетов
{
public partial class FillCon : UserControl
{
public FillCon()
{
InitializeComponent();
comboBox1.SelectedIndex = 0;
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox2.SelectedIndex = 0;
comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox3.SelectedIndex = 0;
comboBox3.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox4.SelectedIndex = 0;
comboBox4.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox5.SelectedIndex = 3;
comboBox5.DropDownStyle = ComboBoxStyle.DropDownList;
Timer();
OpenExcel();
}
private void Timer()
{
timer = new Timer();
timer.Interval = 100;
timer.Tick += TimerEvent;
timer.Start();
}
private Timer timer;
public Excel.Application application;
public Excel.Workbook workBook;
public Excel.Worksheet workSheet;
public Excel.Worksheet workSheet2;
public Excel.Worksheet workSheet3;
public int developmentWithDZ = 0; // Не было использовано
public string recruit;
public string award;
public string office;
public string transcript;
public string roomUgoschService;
public string superb;
public string moderator; // Не было использовано
public string guide; // Не было использовано
public string k;
public string guideMain;
public string res;
public string Res
{
get { return res; }
set { res = value; }
}
public void OpenExcel()
{
application = new Excel.Application();
//application.Visible = true;
workBook = application.Workbooks.Open(Path.Combine(Environment.CurrentDirectory, "Files\\Таблица для расчетов.xlsx")); // ВЫЗОВ ОШИБКИ
workSheet = workBook.Worksheets[1];
workSheet2 = workBook.Worksheets[2];
}
Причем, если я пропишу путь: workBook = application.Workbooks.Open(Path.Combine(Environment.CurrentDirectory, "Таблица для расчетов\\bin\\Debug\\Files\\Таблица для расчетов.xlsx")), то конструктор заработает корректно, но программа выдаст ошибку.
Полный путь к файлу: C:\Users\artem\OneDrive\Рабочий стол\Таблица для расчетов\Таблица для расчетов\bin\Debug\Files\\Таблица для расчетов.xlsx
ArtemSh51, ну блин. Если ты указываешь в конструкте путь, до которого студия может дойти - тогда конструктор запустится.
Если ты указываешь путь, до которого программа может дойти в рантайме - тогда программа работает в рантайме.
(и наоборот)
Тебе это уже несколько вопросов подряд говорят.
1. Прекрати открывать файлы внутри конструктора формы
Кусок кода с конструктором
public FillCon()
{
InitializeComponent();
comboBox1.SelectedIndex = 0;
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox2.SelectedIndex = 0;
comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox3.SelectedIndex = 0;
comboBox3.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox4.SelectedIndex = 0;
comboBox4.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox5.SelectedIndex = 3;
comboBox5.DropDownStyle = ComboBoxStyle.DropDownList;
Timer(); // Так
OpenExcel(); // И так делать не следует.
}
2. Дай пользователю программы возможность выбирать нужный файл
3. Проверяй в коде, что файл существует перед тем как пытаться его открыть.
Создавай его или выдавай человеческую ошибку, если его не оказалось.
Всего три простые (реально простые) вещи и у тебя всё будет работать.
Я не понимаю, почему ты так активно отказываешься от них или отказываешься слушать людей.