创build和保存一个Excel文件

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

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

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

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); } 

您可以使用savefiledialog并让用户select他们的位置,然后当您拨打oWB.SaveCopyAs(用户可选位置)时,您可以使用该位置。

使用SaveFileDialog类来获取用户的期望path:

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

你为什么不使用SaveFileDialog ? 请参阅如何:使用SaveFileDialog组件保存文件

– 编辑 –

如果它的asp.net应用程序,那么这个讨论可能有助于产生一个保存文件对话框。