我有以下代码在我的C#代码后面创建一个新的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);
}
答案 0 :(得分:3)
您可以使用savefiledialog并让用户选择他们的位置,然后当您调用oWB.SaveCopyAs(userselectedlocation)时,您可以使用该位置
答案 1 :(得分:3)
使用SaveFileDialog类从用户获取所需路径:
http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx
答案 2 :(得分:1)
为什么不使用SaveFileDialog
?见How to: Save Files Using the SaveFileDialog Component
<强> - 编辑 - 强>
如果是asp.net应用程序,则this discussion可能有助于生成保存文件对话框。
答案 3 :(得分:-2)
您可以尝试一下。我尝试了,对我有用
oWB.SaveAs(@"C:\Temp\" + "test" + ".xlsx");