cgraham720
cgraham720

Reputation: 147

Issue with output location when saving file

Currently having an issue when saving a merged word. doc to a specific location using a filebrowser dialog

    // input destintion
    private string[] sourceFiles;
    private void browseButton_Click(object sender, EventArgs e)
    {
        FolderBrowserDialog diagBrowser = new FolderBrowserDialog();
        diagBrowser.Description = "Select a folder which contains files needing combined...";

        // Default folder, altered when the user selects folder of choice 
        string selectedFolder = @"";
        diagBrowser.SelectedPath = selectedFolder;

        // initial file path display
        folderPath.Text = diagBrowser.SelectedPath;

        if (DialogResult.OK == diagBrowser.ShowDialog())
        {
            // Grab the folder that was chosen
            selectedFolder = diagBrowser.SelectedPath;
            folderPath.Text = diagBrowser.SelectedPath;

            sourceFiles = Directory.GetFiles(selectedFolder, "*.doc");
        }
    }

    // output destintion
    private string[] sourceFileOutput;
    private void browseButtonOut_Click(object sender, EventArgs e)
    {
        FolderBrowserDialog diagBrowserOutput = new FolderBrowserDialog();
        diagBrowserOutput.Description = "Select a folder location to save the document...";

        // Default folder, altered when the user selects folder of choice 
        string outputFolder = @"";
        diagBrowserOutput.SelectedPath = outputFolder;

        // output file path display
        outputPath.Text = diagBrowserOutput.SelectedPath;

        if (DialogResult.OK == diagBrowserOutput.ShowDialog())
        {
            outputFolder = diagBrowserOutput.SelectedPath;
            outputPath.Text = diagBrowserOutput.SelectedPath;

            sourceFileOutput = Directory.GetFiles(outputFolder);
        }
    }

    private void combineButton_Click(object sender, EventArgs e)
    {
        if (sourceFiles != null && sourceFiles.Length > 0)
        {
            string outputFileName = (sourceFileOutput + "Combined.docx");
            MsWord.Merge(sourceFiles, outputFileName, true);

            // Message displaying how many files are combined. 
            MessageBox.Show("A total of " + sourceFiles.Length.ToString() + " documents have been merged", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        else
        {
            // Message displaying error.
            MessageBox.Show("Please a select a relevant folder with documents to combine", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

instead of getting the 'combined.docx' in the location chosen, i instead get a file called 'System.String[]Combined' saved on the desktop. Obviously there is something clashing regarding the name and the user selected file path.

i currently have the input folder options working however the output + file name doesn't seem to be working correctly.

any suggestions or help would be greatly appreciated, thank you.

Upvotes: 0

Views: 61

Answers (2)

cgraham720
cgraham720

Reputation: 147

got the program to use the 'selected' destination.

   // output destintion
    string outputFolder = @"";
    private void browseButtonOut_Click(object sender, EventArgs e)
    {
        FolderBrowserDialog diagBrowserOutput = new FolderBrowserDialog();
        diagBrowserOutput.Description = "Select a folder location to save the document...";

        // Default folder, altered when the user selects folder of choice 
        diagBrowserOutput.SelectedPath = outputFolder;

        // output file path display
        outputPath.Text = diagBrowserOutput.SelectedPath;

        if (DialogResult.OK == diagBrowserOutput.ShowDialog())
        {
            outputFolder = diagBrowserOutput.SelectedPath;
            outputPath.Text = diagBrowserOutput.SelectedPath;
        }
    }
    private void combineButton_Click(object sender, EventArgs e)
    {
        if (sourceFiles != null && sourceFiles.Length > 0)
        {
            string folderFolder = outputFolder;
            string outputFile = "Combined.docx";
            string outputFileName = Path.Combine(folderFolder, outputFile);
            MsWord.Merge(sourceFiles, outputFileName, true);

            // Message displaying how many files are combined. 
            MessageBox.Show("A total of " + sourceFiles.Length.ToString() + " documents have been merged", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

i used the path.combine as suggested, as played around with the variables i had used.

Upvotes: 0

nvoigt
nvoigt

Reputation: 77304

string outputFileName = (sourceFileOutput + "Combined.docx");

This should probably read

string outputFileName = selectedFolder + "Combined.docx";

That said, please use Path.Combine to combine two parts of a path.

Upvotes: 2

Related Questions