Как выбрать каталог вместо файла в диалоговом окне «Сохранить как» в VSTO? - PullRequest
0 голосов
/ 21 февраля 2020

Я создаю надстройку Excel с VSTO и C#, и я хотел бы указать каталог, в котором будут сохранены результирующие файлы надстройки (их имена файлов создаются программным способом).

I попытался использовать SaveFileDialog saveDlg = new SaveFileDialog(); в моем C# файле, но диалог Сохранить файл как не позволил мне выбрать каталог ...

Не могли бы вы помочь мне со свойствами saveDlg, которые я должен установить?

Спасибо?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Вот несколько вариантов для вас:

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

0 голосов
/ 21 февраля 2020

Я использовал FolderBrowserDialog вместо этого, как в следующем коде:

            FolderBrowserDialog folderDlg = new FolderBrowserDialog();

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

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

                … saves the file …     
            }

...