2016-10-25 5 views
1

я currentWrkBook по fileName следующим кодом:Как открыть книгу по имени файла без отображения окна Excel?

using Excel = Microsoft.Office.Interop.Excel; 
... 
Excel.Workbook currentWrkBook = Excel.Application.Workbooks.Open(fileName); 
... 

Результат получить OK (при запуске в вышеприведенном заявлении имя_файла [D:/DataProject/Resources.xlsm] открыт):

enter image description here

Теперь я хотел бы получить currentWrkBook по имени файла без открытого файла.

это возможно? Любые советы по ним будут полезны. Заранее спасибо.

+0

Что вы пытаетесь достичь этим? –

+0

Поскольку каждый раз запускается, имя файла открывается, так раздражает, поэтому я хочу, чтобы он был скрыт – MinhKiyo

+0

Итак, вы все же хотите открыть файл, просто скройте приложение excel от пользователя. В этом случае установите для свойства [Application.Visible] (https://msdn.microsoft.com/en-us/library/office/ff198119.aspx) значение false. Также этот вопрос может быть полезен: http://stackoverflow.com/questions/8179835/c-sharp-show-hide-excel-window –

ответ

1

Попробуйте открыть файл из нового объекта Application:

var excel = new Excel.Application(); 
var workbook = excel.Workbooks.Open(filename); 

Вполне возможно, что у вас есть первенствует экземпляр уже запущен, то новая книга становится видимым, а также.

EDIT: В случае, если вам нужно получить ссылку для книги, которая уже открыта, вы можете получить его by name:

Excel.Workbook currentWrkBook = Excel.Application.Workbooks[fileName]; 
+0

Поскольку при использовании метода Open() обязательно открывается имя_файла. После открытия в первый раз установите для свойства Application.Visible значение false, оно будет скрыто. Так что я думаю, что нет никакого способа сделать это. – MinhKiyo

+0

Наверняка, есть способ сделать это :) Однако вам нужно быть более конкретным. Этот файл уже открыт? Открыто ли ваше приложение или другое? Кроме того, я обновил свой ответ, см. Редактирование. –

+0

У меня проблема: у меня есть имя файла, которое еще не открыто. Приложение Excel открывает другой файл. ^^ Я понимаю. Спасибо за ваши усилия! – MinhKiyo

0

Я, кажется, быть в состоянии сделать это, открыв файл в только для чтения. Для меня это достаточно хорошо, так как мне просто нужно прочитать данные.

var oXL = new Microsoft.Office.Interop.Excel.Application(); 
oXL.Visible = false; 

Workbook Wbook = oXL.Workbooks.Open(txtFileName.Text, ReadOnly: true, Password: "password"); 

var sheet = Wbook.Worksheets[1]; 

foreach (Range row in sheet.UsedRange.Rows) 
{ 
    var firstName = sheet.Cells[row.Row, 1].Value2, 
    var lastName = sheet.Cells[row.Row, 2].Value2 
} 

Если я переключу параметр ReadOnly на false, то Excel откроет файл явно.

Смежные вопросы