2010-04-29 69 views
2

我有下面的代码,在我的C#代码后面创建一个新的Excel文件。当我尝试保存文件时,我希望用户选择保存位置。创建和保存Excel文件

在方法#1中,我可以使用工作簿SaveCopyAs保存文件,而不会提示用户输入位置。这将一个文件保存到C:\ Temp目录。

方法#2将文件保存在我的Users \ Documents文件夹中,然后提示用户选择位置并保存第二个副本。如何消除在Users \ Documents文件夹中保存的第一个副本?

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

克里斯,请阅读常见问题在http://stackoverflow.com/faq。这不是标签如何工作。 – 2010-04-29 19:23:54

+0

感谢您提供这些有价值的信息。 – Kris 2010-04-29 19:37:50

回答

3

您可以使用savefiledialog,并让用户选择自己的位置,然后ü可以使用该位置当u调用oWB.SaveCopyAs(userselectedlocation)

3

使用SaveFileDialog类从一开始的愿望路径用户:

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

+0

这只适用于Windows窗体吗?我试图从Web应用程序中获取另存为对话框。 – Kris 2010-04-29 19:28:28

+0

@Kris:在你的文章中没有提到它的一个web应用程序;我认为你应该添加你的web应用标签(例如asp.net)。 – 2010-04-29 19:31:39

+0

@KMan:对不起,我忘了那件。 :) – Kris 2010-04-29 19:33:55