gpt4 book ai didi

C# - 从 C# WinForm 应用程序运行/执行 "Excel to CSV File Converter"控制台应用程序

转载 作者:行者123 更新时间:2023-12-03 08:16:06 27 4
gpt4 key购买 nike

我正在使用带有 OpenFileDialog、FileBrowserDialog 的 C# 开发一个 WinForms 应用程序,并且我已经启用了我想要的多个 xls 文件的选择:

  • 将选定的文件复制到合并目录
  • 通过命令提示符命令 [C:\CommissionRecon\ConvertExcel\ConvertExcelTo.exe ^ xxxxx.xls ^ xxxx.csv]
  • 将所选文件转换为 .csv 文件
  • 使用命令提示符将所有 .csv 文件合并为 1 个 csv 文件
    [.csv 文件位置:复制 *.csv ^ 文件名.csv]

  • 执行此控制台应用程序的正确语法是什么?

    请检查下面的代码并推荐一些修复。我包含了很多代码,以便您了解全局,但我主要希望您尽可能只查看私有(private) void sourceFiles_Click 方法。

    谢谢!

    这是 MainForm.CS 文件中的代码:
        // Select Source Files Button 
    private void sourceFiles_Click(object sender, EventArgs e)
    {
    Stream myStream = null;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    this.sourceFileOpenFileDialog.InitialDirectory = "i:\\CommissisionReconciliation\\Review\\";
    this.sourceFileOpenFileDialog.Filter = "Excel Files (*.xls;*.xlsx;)|*.xls;*.xlsx;|All Files (*.*)|*.*";
    this.sourceFileOpenFileDialog.FilterIndex = 2;
    this.sourceFileOpenFileDialog.RestoreDirectory = true;
    this.sourceFileOpenFileDialog.Multiselect = true;
    this.sourceFileOpenFileDialog.Title = "Excel File Browser";

    DialogResult dr = this.sourceFileOpenFileDialog.ShowDialog();
    if (dr == System.Windows.Forms.DialogResult.OK)
    {
    string consolidatedFolder = targetFolderBrowserDialog.SelectedPath;
    // Read the files
    foreach (String file in sourceFileOpenFileDialog.FileNames)
    {
    try
    {
    // Copy each selected xlsx files into the specified TargetFolder

    System.IO.File.Copy(fileName, consolidatedFolder + @"\" + System.IO.Path.GetFileName(fileName));

    // Convert each selected XLSX File to CSV Using the command prompt
    // [I:\CommissisionReconciliation\App\ConvertExcel\ConvertExcelTo.exe ^ .XLS file location ^ filename.csv]
    // example: ConvertExcelTo.exe ^ I:\CommissisionReconciliation\ Review\_Consolidated\ALH\2011-350-00-600070-
    // 03-09alh-AMLHS of Florida.xlsx ^ 2011-350-00-600070-03-09alh-AMLHS of Florida.csv

    Process covertFilesProcess = new Process();

    covertFilesProcess.StartInfo.WorkingDirectory = "I:\\CommissisionReconciliation\\App\\ConvertExcel\\";
    covertFilesProcess.StartInfo.FileName = sourceFileOpenFileDialog.FileName;
    covertFilesProcess.StartInfo.Arguments = "ConvertExcelTo.exe" + " ^ " + targetFolderBrowserDialog.SelectedPath + "^" + sourceFileOpenFileDialog.FileName + ".csv";
    covertFilesProcess.StartInfo.UseShellExecute = false;
    covertFilesProcess.StartInfo.CreateNoWindow = true;
    covertFilesProcess.StartInfo.RedirectStandardOutput = true;
    covertFilesProcess.StartInfo.RedirectStandardError = true;
    covertFilesProcess.Start();

    StreamReader sOut = covertFilesProcess.StandardOutput;
    StreamReader sErr = covertFilesProcess.StandardError;

    }

    catch (SecurityException ex)
    {
    // The user lacks appropriate permissions to read files, discover paths, etc.
    MessageBox.Show("Security error. The user lacks appropriate permissions to read files, discover paths, etc. Please contact your administrator for details.\n\n" +
    "Error message: " + ex.Message + "\n\n" +);
    }
    catch (Exception ex)
    {
    // Could not load the image - probably related to Windows file system permissions.
    MessageBox.Show("Cannot display the image: " + file.Substring(file.LastIndexOf('\\'))
    + ". You may not have permission to read the file, or " +
    "it may be corrupt.\n\nReported error: " + ex.Message);
    }

    finally
    {
    sOut.Close();
    sErr.Close();
    }

    try
    {
    // Combine all .csv files into 1 csv file using the command prompt
    // [.csv File location: Copy *.csv ^ filename.csv]
    // example: [.CSV I:\CommissisionReconciliation\ Review\_Consolidated\ALH\: Copy *.csv
    // ^2011-350-00-600070-03-09alh-AMLHS of Florida.csv)

    Process consolidateFilesProcess = new Process();

    // substring function to take off the extension from sourceFileOpenFileDialog.FileName
    // int csvFileName.Length = sourceFileOpenFileDialog.FileName.Length - 3;

    consolidateFilesProcess.StartInfo.WorkingDirectory = "I:\\CommissisionReconciliation\\App\\ConvertExcel\\";
    consolidateFilesProcess.StartInfo.FileName = sourceFileOpenFileDialog.FileName;
    consolidateFilesProcess.StartInfo.Arguments = ".CSV " + " ^ " + targetFolderBrowserDialog.SelectedPath + ": Copy *.csv ^" + csvFileName+ ".csv";
    consolidateFilesProcess.StartInfo.UseShellExecute = false;
    consolidateFilesProcess.StartInfo.CreateNoWindow = true;
    consolidateFilesProcess.StartInfo.RedirectStandardOutput = true;
    consolidateFilesProcess.StartInfo.RedirectStandardError = true;
    consolidateFilesProcess.Start();

    StreamReader sOut = consolidateFilesProcess.StandardOutput;
    StreamReader sErr = consolidateFilesProcess.StandardError;
    }

    catch (SecurityException ex)
    {
    // The user lacks appropriate permissions to read files, discover paths, etc.
    MessageBox.Show("Security error. The user lacks appropriate permissions to read files, discover paths, etc. Please contact your administrator for details.\n\n" +
    "Error message: " + ex.Message + "\n\n" +);
    }
    catch (Exception ex)
    {
    // Could not load the image - probably related to Windows file system permissions.
    MessageBox.Show("Cannot display the image: " + file.Substring(file.LastIndexOf('\\'))
    + ". You may not have permission to read the file, or " +
    "it may be corrupt.\n\nReported error: " + ex.Message);
    }

    finally
    {
    sOut.Close();
    sErr.Close();
    }

    } // ends foreach (String file in openFileDialog1.FileNames)
    } // ends if (dr == System.Windows.Forms.DialogResult.OK)
    } // ends selectFilesButton_Click method

    if (sourceFileOpenFileDialog.ShowDialog() == DialogResult.OK)
    {
    try
    {
    if ((myStream = sourceFileOpenFileDialog.OpenFile()) != null)
    {
    using (myStream)
    {
    textBoxSourceFiles.Text = sourceFileOpenFileDialog.FileNames;
    }
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
    }
    }

    if (sourceFileOpenFileDialog.ShowDialog() == DialogResult.OK)
    {
    Log("Source Files: " + sourceFileOpenFileDialog.SelectedFiles);
    }
    textBoxSourceFiles.Text = sourceFileOpenFileDialog.SelectedFiles;
    }

    最佳答案

    创建 ProcessSTARTInfo 时,需要将要运行的进程的可执行文件指定为文件名!
    例如:

    Process covertFilesProcess = new Process();

    covertFilesProcess.StartInfo.WorkingDirectory = "I:\\CommissisionReconciliation\\App\\ConvertExcel\\";
    covertFilesProcess.StartInfo.FileName = "ConvertExcelTo.exe";
    covertFilesProcess.StartInfo.Arguments = "^ " + targetFolderBrowserDialog.SelectedPath + "^" + sourceFileOpenFileDialog.FileName + ".csv";
    covertFilesProcess.StartInfo.UseShellExecute = true;
    covertFilesProcess.StartInfo.CreateNoWindow = true;
    covertFilesProcess.StartInfo.RedirectStandardOutput = true;
    covertFilesProcess.StartInfo.RedirectStandardError = true;
    covertFilesProcess.Start();

    StreamReader sOut = covertFilesProcess.StandardOutput;
    StreamReader sErr = covertFilesProcess.StandardError;

    关于C# - 从 C# WinForm 应用程序运行/执行 "Excel to CSV File Converter"控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5357797/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com