2013-11-06 17 views
2

Мне нужно создать и сохранить файл Excel, не сообщая в коде путь и имя файла. Поэтому я могу использовать savefiledialog, чтобы показать окно сохранения, чтобы ввести путь и имя файла, но я не могу использовать его правильно. Я попытался использовать рабочий лист.saveas, но этот класс не показывает окно сохранения для ввода пути и имени файла. Как сохранить файл excel с этим полем сохранения?Сохраните файл excel с помощью savefiledialog класса в C#

+0

Это приложение WinForms или WPF? Или вы пытаетесь сделать это в приложении C# Library/Console? – Shiva

+0

Пожалуйста, разместите соответствующий код, чтобы другие могли видеть, что вы сделали до сих пор. –

ответ

5

Основная механика этого заключается в следующем:

public void SaveExcelWorkBook() 
{ 
    OpenFileDialog openDlg = new OpenFileDialog(); 
    openDlg.InitialDirectory = @"C:\"; 
    openDlg.ShowDialog(); 
    string path = openDlg.FileName; 

    if (openDlg.ShowDialog() == DialogResult.OK) 
    { 
     try 
     { 
     Application excelApp = new Application(); 
     Workbook workBook = excelApp.Workbooks.Open(path); 
     Worksheet workSheet = (Worksheet)workBook.Worksheets[1]; 

     // Do your work here inbetween the declaration of your workbook/worksheet 
     // and the save action below. 

     workBook.SaveAs(/*path to save it to*/); // NOTE: You can use 'Save()' or 'SaveAs()' 
     workBook.Close(); 
     } 

     catch (Exception ex) 
     { 
     } 
    } 
} 

Я думаю, что следует отметить, что объекты Interop являются неуправляемый так, вы хотите, чтобы убедиться, что вы отпускаете их после вызова .Close(). Вот пример:

Marshal.ReleaseComObject(workBook); 

Есть два фантастических уроки для использования Excel here и here. Удачи!

+0

Привет, Брайан, спасибо за ваш ответ, но я хочу, чтобы пользователь вводил путь и имя файла. Таким образом, необходимо показать эту коробку, например, когда вы нажимаете кнопку «Сохранить как» в программе Excel. – renato

+2

Это 'FileDialog'. C# имеет [класс] (http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog (v = vs.110) .aspx) для этого тоже. – Brian

+0

Я отредактировал свой ответ, чтобы включить то, о чем вы просили в комментариях. – Brian

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