Открытие листа Excel по запросу OLEDBCommand - PullRequest
1 голос
/ 15 марта 2019

У меня проблема, которая очень похожа на уже опубликованный вопрос здесь , но не решена. Эта проблема заключается в том, что когда мое приложение читает из файла Excel (может случиться и с CSV) с помощью oledb , а файл уже открыт в Excel (не через приложение, пользователь просто открывает его отдельно) новый Excel откроет файл в режиме только для чтения. Если файл не открывается вообще, Excel не появляется. Это происходит прямо при открытии соединения - conn.Open ()

Вот метод для справки:

public static DataTable GetDataTableFromExcelSheet(string ExcelFilePath, string SheetName)
        {
            string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFilePath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\""; 
            string query = "SELECT * from [" + SheetName + "$]";
            System.Data.DataTable dt = new System.Data.DataTable();
            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                conn.Open();
                using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, conn))
                {
                    dataAdapter.Fill(dt);
                }
                conn.Close();

            }
            return dt;
        }

Есть ли способ предотвратить открытие Excel? Или хотя бы не сделать это видимым? (приложение нигде не пытается запустить приложение Excel, у класса даже нет взаимодействия)

...