2010-04-29 2 views
2

У меня есть следующий код, который создает новый файл Excel в моем коде C#. Когда я пытаюсь сохранить файл, я хотел бы, чтобы пользователь выделил место сохранения.Создание и сохранение файла Excel

В методе # 1 я могу сохранить файл my, используя книгу SaveCopyAs, без запроса пользователя о местоположении. Это сохраняет один файл в каталоге C: \ Temp.

Способ №2 сохранит файл в папке «Мои документы \ Документы», а затем предложит пользователю выбрать местоположение и сохранить вторую копию. Как я могу удалить первую копию из сохранения в папке «Пользователи \ Документы»?

Excel.Application oXL; 
Excel._Workbook oWB; 
Excel._Worksheet oSheet; 
Excel.Range oRng; 

try 
{ 
    //Start Excel and get Application object. 
    oXL = new Excel.Application(); 
    oXL.Visible = false; 

    //Get a new workbook. 
    oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value)); 
    oSheet = (Excel._Worksheet)oWB.ActiveSheet; 

    // ***** 
    oSheet.Cells[2, 6] = "Ship To:"; 
    oSheet.get_Range("F2", "F2").Font.Bold = true; 

    oSheet.Cells[2, 7] = sShipToName; 
    oSheet.Cells[3, 7] = sAddress; 
    oSheet.Cells[4, 7] = sCityStateZip; 
    oSheet.Cells[5, 7] = sContactName; 
    oSheet.Cells[6, 7] = sContactPhone; 

    oSheet.Cells[9, 1] = "Shipment No:"; 
    oSheet.get_Range("A9", "A9").Font.Bold = true; 
    oSheet.Cells[9, 2] = sJobNumber; 

    oSheet.Cells[9, 6] = "Courier:"; 
    oSheet.get_Range("F9", "F9").Font.Bold = true; 
    oSheet.Cells[9, 7] = sCarrierName; 

    oSheet.Cells[11, 1] = "Requested Delivery Date:"; 
    oSheet.get_Range("A11", "A11").Font.Bold = true; 
    oSheet.Cells[11, 2] = sRequestDeliveryDate; 

    oSheet.Cells[11, 6] = "Courier Acct No:"; 
    oSheet.get_Range("F11", "F11").Font.Bold = true; 
    oSheet.Cells[11, 7] = sCarrierAcctNum; 
    // ***** 

    Method #1 
    //oWB.SaveCopyAs(@"C:\Temp\" + sJobNumber +".xls"); 

    Method #2 
    oXL.SaveWorkspace(sJobNumber + ".xls"); 
} 
catch (Exception theException) 
{ 
    String errorMessage; 
    errorMessage = "Error: "; 
    errorMessage = String.Concat(errorMessage, theException.Message); 
    errorMessage = String.Concat(errorMessage, " Line: "); 
    errorMessage = String.Concat(errorMessage, theException.Source); 
} 
+1

Kris, пожалуйста, прочтите FAQ на http://stackoverflow.com/faq. Это не то, как работают теги. –

+0

Благодарим вас за эту ценную информацию. – Kris

ответ

3

Вы можете использовать SaveFileDialog и иметь пользователю выбрать свое местоположение, то вы можете использовать это место, когда и называют oWB.SaveCopyAs (userselectedlocation)

3

Используйте класс SaveFileDialog, чтобы получить путь от желания пользователь:

http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx

+0

Это работает только для окон? Я пытаюсь получить диалог сохранения из веб-приложения. – Kris

+0

@Kris: нигде в своем сообщении не упоминается, что его веб-приложение; Я думаю, вы также должны добавить свой тег веб-приложения (например, asp.net). –

+0

@KMan: Извините, я забыл эту штуку. :) – Kris

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