2017-01-31 2 views
-3

Я новичок в программировании на C#, поэтому, извините, если я совершу ошибку новичка. Я пытаюсь написать приложение, которое, когда пользователь нажимает кнопку, открывает OpenFileDialog, и он должен выбрать файл «.xlsx», и программа должна открыть этот файл в excel. Вот мой код:Не могу открыть файл excel с помощью cmd

OpenFileDialog openfile = new OpenFileDialog(); 
openfile.Filter = ("Excel files |*.xlsx"); 
penfile.FilterIndex = 1; 
String file_name; 
file_name = openfile.FileName; 
if(openfile.ShowDialog() == DialogResult.OK) 
{ 
    string cmd= "/C start excel.exe " + file_name; 
    System.Diagnostics.Process.Start("CMD.exe", cmd); 
} 

Проблема заключается в том, что открывается только первенствовать, но без этого файла.

Заранее спасибо.

+0

Вы проверили, что содержимое 'file_name' правильно? –

+0

У вас есть сообщение об ошибке? – mason

+3

Чтение 'openfile.FileName' после' ShowDialog() '... Вы заметили бы пустое имя файла, если бы вы установили точку останова в блоке' if() '. – CodeCaster

ответ

4

Конечно, вы должны прочитать файл, выбранный OpenFileDialog после закрытия диалога, а не до ShowDialog

... 
if(openfile.ShowDialog() == DialogResult.OK) 
{ 
    file_name = openfile.FileName; 
    .... 
+0

Это сработало, спасибо. Извините за эту ошибку. –

0

Чтобы добавить ответ Стива:

Вам не нужны дополнительные команды вещи. Это также откроет для вас любой файл.

if(openfile.ShowDialog() == DialogResult.OK) 
{ 
    file_name = openfile.FileName; 
    System.Diagnostics.Process.Start(file_name); 
} 

Или, если вы хотите, чтобы убедиться, что его файл Excel:

if(openfile.ShowDialog() == DialogResult.OK) 
{ 
    file_name = openfile.FileName; 

    if (file_name.ToUpper().Contains(".XLS") 
     System.Diagnostics.Process.Start(file_name); 
} 
+0

«Любой файл» Если у него есть программа по умолчанию. – GibralterTop

+0

Спасибо за подсказку. –

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