.net 如何在VSTO的“另存为”对话框中选择目录而不是文件?

.net 如何在VSTO的“另存为”对话框中选择目录而不是文件?,.net,excel,vsto,add-in,.net,Excel,Vsto,Add In,我正在使用VSTO和C#创建一个Excel外接程序,我想设置外接程序生成文件的保存目录(它们的文件名是通过编程生成的) 我尝试使用SaveFileDialog saveDlg=newsavefiledialog()在我的C#文件中,但“文件另存为”对话框无法让我选择目录 您能帮我设置saveDlg的属性吗 谢谢?我改用FolderBrowserDialog,如下代码所示: FolderBrowserDialog folderDlg = new FolderBrowserD

我正在使用VSTO和C#创建一个Excel外接程序,我想设置外接程序生成文件的保存目录(它们的文件名是通过编程生成的)

我尝试使用
SaveFileDialog saveDlg=newsavefiledialog()在我的C#文件中,但“文件另存为”对话框无法让我选择目录

您能帮我设置
saveDlg
的属性吗


谢谢?

我改用FolderBrowserDialog,如下代码所示:

            FolderBrowserDialog folderDlg = new FolderBrowserDialog();

            if (folderDlg.ShowDialog() == DialogResult.OK)
            {
                string directory = folderDlg.SelectedPath;

                string fileName = directory + "\\" + MyGeneratedFileName();

                … saves the file …     
            }


我改用FolderBrowserDialog,如下代码所示:

            FolderBrowserDialog folderDlg = new FolderBrowserDialog();

            if (folderDlg.ShowDialog() == DialogResult.OK)
            {
                string directory = folderDlg.SelectedPath;

                string fileName = directory + "\\" + MyGeneratedFileName();

                … saves the file …     
            }


以下是您的一些选择:

string fileName;
string folderName;

//Option 1
// FolderBrowserDialog - returns only path to the folder
FolderBrowserDialog fileFolderBrowserDialog = new FolderBrowserDialog();
fileFolderBrowserDialog.ShowDialog();
folderName = fileFolderBrowserDialog.SelectedPath;
fileName = string.Concat(fileSaveAsDialog.FileName, "\\", "your generated file name.xlsx");

//Option 2
//FileDialog - returns full path to the file
//TODO: Set up this dialog with proper file extensions
FileDialog fileSaveAsDialog = new SaveFileDialog();
fileSaveAsDialog.AddExtension = true;
fileSaveAsDialog.Filter = "Excel Workbooks (*.xls, *.xlsx)|*.xls;*.xlsx|Excel Macro-Enabled Workbooks | *.xlsm |All files *.*| *.*";
fileSaveAsDialog.ShowDialog();
fileName = fileSaveAsDialog.FileName;

//Option 3
// Excel SaveAs method
// if file full name is generated programatically - 
// you may save it without prompting user
Excel.Application xlApp = Globals.ThisAddIn.Application;
Excel.Workbook xlWB = xlApp.ActiveWorkbook; //or new Excel.Workbook(); or .Workbooks["Workbook name"]
fileName = "C:\\Users\\username\\Desktop\\my Excel wb.xlsx";
xlWB.SaveAs(fileName);


以下是您的一些选择:

string fileName;
string folderName;

//Option 1
// FolderBrowserDialog - returns only path to the folder
FolderBrowserDialog fileFolderBrowserDialog = new FolderBrowserDialog();
fileFolderBrowserDialog.ShowDialog();
folderName = fileFolderBrowserDialog.SelectedPath;
fileName = string.Concat(fileSaveAsDialog.FileName, "\\", "your generated file name.xlsx");

//Option 2
//FileDialog - returns full path to the file
//TODO: Set up this dialog with proper file extensions
FileDialog fileSaveAsDialog = new SaveFileDialog();
fileSaveAsDialog.AddExtension = true;
fileSaveAsDialog.Filter = "Excel Workbooks (*.xls, *.xlsx)|*.xls;*.xlsx|Excel Macro-Enabled Workbooks | *.xlsm |All files *.*| *.*";
fileSaveAsDialog.ShowDialog();
fileName = fileSaveAsDialog.FileName;

//Option 3
// Excel SaveAs method
// if file full name is generated programatically - 
// you may save it without prompting user
Excel.Application xlApp = Globals.ThisAddIn.Application;
Excel.Workbook xlWB = xlApp.ActiveWorkbook; //or new Excel.Workbook(); or .Workbooks["Workbook name"]
fileName = "C:\\Users\\username\\Desktop\\my Excel wb.xlsx";
xlWB.SaveAs(fileName);

你可以用代替,你可以用代替。