предотвратить открытие листа Excel по запросу OLEDBCommand

Я работаю с С# в WPF. Вытягивание данных в таблицы данных. Все работало нормально, пока я не перешел на использование фактического имени рабочего листа, извлеченного из листа через цикл foreach (лист в рабочей книге).

Теперь, когда у меня есть фактическое имя рабочего листа и я включаю его в свою OLEDbCommand, рабочий лист открывается на экране.

Я хотел бы предотвратить/остановить открытие файла Excel на экране, поскольку он не нужен и не нужен.

Ниже приведена строка подключения и начало try/catch с командами и запросом.

string con_string = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fullFilePath + ";Extended Properties='Excel 12.0 Xml;HDR=Yes'";
try
{
    OleDbConnection con = new OleDbConnection(con_string);
    con.Open();
    //OleDbCommand ocon = new OleDbCommand("SELECT * FROM [" + myMonth + " " + year + "$]", con);
    OleDbCommand ocon = new OleDbCommand("SELECT * FROM [" + myWorkSheet + "$]", con);
    OleDbDataAdapter sda = new OleDbDataAdapter(ocon);
    sda.Fill(data);
    dGrid.DataContext = data;
}

Если я вернусь к закомментированной строке, используя переменные myMonth и year (созданные в методе SelectionChanged из объекта Calendar), электронная таблица не откроется.

Ниже приведен код, который получает доступ и создает список фактических рабочих листов, которые я использую для заполнения раскрывающегося списка comboBox.

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook excelBook = xlApp.Workbooks.Open(fullFilePath);
String[] excelSheets = new String[excelBook.Worksheets.Count];
int i = 0;
foreach (Microsoft.Office.Interop.Excel.Worksheet wSheet in excelBook.Worksheets)
{
    excelSheets[i] = wSheet.Name;
    cmbBox2.Items.Add(excelSheets[i]);
    i++;
}

person lsieting    schedule 06.06.2017    source источник
comment
oledbconnection не открывает видимый экземпляр Excel. Я предполагаю, что где-то xlApp все еще создается и используется.   -  person Cee McSharpface    schedule 06.06.2017
comment
@dlatikay -- Файл Excel xlsx открывается, когда я запускаю OleDbCommand. Может быть, потому что я напрямую ссылаюсь на рабочий лист со строкой myWorksheet?   -  person lsieting    schedule 06.06.2017
comment
Я не могу воспроизвести это, а также не могу придумать сценарий, в котором соединение с OleDb одним запустит и покажет Excel... как есть даже не требуется установка на компьютер. Каковы значения времени выполнения ocon.CommandText в обоих случаях?   -  person Cee McSharpface    schedule 07.06.2017
comment
@dlatikay - это интересно. Сегодня утром моя программа запускается и НЕ вызывает файл xlxs. Работает так, как задумано. Ненавижу такие временные проблемы. Спасибо за помощь. (Нет изменений в методах)   -  person lsieting    schedule 07.06.2017
comment
Мой случай Я могу продублировать этот случай в vb.net, я использую System.Data.OleDb.OleDbConnection, чтобы получить таблицу excel. Случай № 1. Если я уже открываю Excel и вызываю ExcelCNN = New System.Data.OleDb.OleDbConnection(vCNNstring), то ExcelCNN.Open() открывается Excel. Дело № 2 выполняется так же, как дело № 1, но раньше Excel не открывался, новый Excel не открывался. Затем добавьте xlApp.DisplayAlerts = false; и xlApp.Visible = false; Не помогите предотвратить.   -  person ปรีดา ตั้งนภากร    schedule 10.04.2019


Ответы (1)


Добавьте эти две строки-

xlApp.DisplayAlerts = false;
xlApp.Visible = false;

ниже этой строки-

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
person Souvik Ghosh    schedule 06.06.2017
comment
@souvik-ghoush --- пробовал. Лист Excel по-прежнему открывает файл .xlsx при ссылке на OleDbCommand. Спасибо - person lsieting; 06.06.2017