繁体   English   中英

将 XLS 文件转换为 CSV 的程序在运行时不创建文件

[英]Program to convert XLS files to CSV not creating the file when run

我正在 Visual Studio 2019 社区版中构建一个应用程序,以将 Excel XLS 文件转换为 CSV。 我找到了一些使用 ExcelReader 库的示例代码并对其进行了修改,以便它可以提取 XLS 文件并制作一个 test.csv 文件。 当我运行它时,我没有收到任何错误,但没有创建文件。

这是为了帮助自动化当前的手动过程,我们必须手动打开 XLS 文件并将其保存为 CSV。 我正在使用 Visual Studio 社区版 (2019) 并添加了 ExcelReader 库。

'''public partial class Default2 : System.Web.UI.Page
{
    static void Main() { }
    DataSet result = new DataSet();
    string filePath = 
@"C:\Users\BEM26331\Documents\AppDevProjects\9.10.19.xls";

    protected void UploadButton_Click(object sender, EventArgs e)
    {
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        FileStream stream = File.Open(filePath, FileMode.Open, 
FileAccess.Read);

        Excel.IExcelDataReader excelReader = 
Excel.ExcelReaderFactory.CreateBinaryReader(stream);
        DataSet result = excelReader.AsDataSet();
        excelReader.Close();

        result.Tables[0].TableName.ToString();

        string csvData = "";
        int row_no = 0;
        int ind = 0;

        while (row_no < result.Tables[ind].Rows.Count)
        {
            for (int i = 0; i < result.Tables[ind].Columns.Count; i++)
            {
                csvData += result.Tables[ind].Rows[row_no][i].ToString() 
+ ",";
            }
            row_no++;
            csvData += "\n";
        }

        string output = 
@"C:\Users\BEM26331\Documents\AppDevProjects\test.csv";
        StreamWriter csv = new StreamWriter(@output, false);
        csv.Write(csvData);
        csv.Close();
    }
}'''

最终结果应该创建相同的文件,但保存为 CSV。 实际的 output 不会创建任何文件。

可能是这样的?:

    public void ConvertToCSV(string sourceFile, string targetFile)
            {
                using (var stream = System.IO.File.Open(sourceFile, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                {
                    //add ExcelDataReader and ExcelDataReader.DataSet
                    //Reading from a OpenXml Excel file (2007 format; *.xlsx)
                    using (var reader = ExcelDataReader.ExcelReaderFactory.CreateOpenXmlReader(stream))
                    {
                        //DataSet result = reader.AsDataSet();
                        DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration()
                        {
                            ConfigureDataTable = (_) => new ExcelDataTableConfiguration() { UseHeaderRow = true }
                        });
                        if (result.Tables.Count > 0)
                        {
                                System.Text.StringBuilder output = new StringBuilder();
                            DataTable table = result.Tables[0];
                            //save column names
                            output.AppendLine(String.Join(",", table.Columns.Cast<System.Data.DataColumn>().ToList()));
                            //save all rows
                            foreach (System.Data.DataRow dr in table.Rows)
                            {
                                output.AppendLine(String.Join(",", dr.ItemArray.Select(f=>f.ToString() ).ToList()   ) );
                            }
                            System.IO.File.WriteAllText(targetFile, output.ToString());
                        }
                    }
                }
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM