【问题标题】:How convert a csv into .xlsx file?如何将 csv 转换为 .xlsx 文件?
【发布时间】:2019-02-18 22:07:55
【问题描述】:

我是工程学院的法国学生。 我在公司有工作要做(是的,我也在工作)。

我已经开发了一个输入 xlsx 文件的应用程序,我使用 NPOI 库。 但是现在我需要在输入文件中获取 csv,我尝试了几件事但没有成功。 我只需要将 csv 文件转换为 XSSFworkbook 和 sheet。

我是新手,但我真的很想提高我的 c# 能力。

感谢您的帮助。

【问题讨论】:

标签: c# csv xlsx


【解决方案1】:

我在 Github 上找到了一个可以帮助你的示例:

class Program
{
        static void Main(string[] args)
    {
        string csvDocument = @"FL_insurance_sample.csv";
        var lines = ReadCsv(csvDocument, delimiter: ',');
        ConvertWithNPOI("NPOI.xlsx", "NPOI", lines);
    }

        private static bool ConvertWithNPOI(string excelFileName, string worksheetName, IEnumerable<string[]> csvLines)
        {
            if (csvLines == null || csvLines.Count() == 0)
            {
                return (false);
            }

            int rowCount = 0;
            int colCount = 0;

            IWorkbook workbook = new XSSFWorkbook();
            ISheet worksheet = workbook.CreateSheet(worksheetName);

            foreach (var line in csvLines)
            {
                IRow row = worksheet.CreateRow(rowCount);

                colCount = 0;
                foreach (var col in line)
                {
                    row.CreateCell(colCount).SetCellValue(TypeConverter.TryConvert(col));
                    colCount++;
                }
                rowCount++;
            }

            using (FileStream fileWriter = File.Create(excelFileName))
            {
                workbook.Write(fileWriter);
                fileWriter.Close();
            }

            worksheet = null;
            workbook = null;

            return true;
    }

    private static bool ConvertWithEPPlus(string csvFileName, string excelFileName, string worksheetName, char delimiter = ';')
    {
            bool firstRowIsHeader = false;

            var format = new ExcelTextFormat();
            format.Delimiter = delimiter;
            format.EOL = "\r";              // DEFAULT IS "\r\n";
            // format.TextQualifier = '"';

            using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFileName)))
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetName);
                worksheet.Cells["A1"].LoadFromText(new FileInfo(csvFileName), format, OfficeOpenXml.Table.TableStyles.Medium27, firstRowIsHeader);
                package.Save();
            }

            return (true);
    }
    private static IEnumerable<string[]> ReadCsv(string fileName, char delimiter = ';')
    {
        var lines = System.IO.File.ReadAllLines(fileName, Encoding.UTF8).Select(a => a.Split(delimiter));
        return (lines);
    }
}

原创https://github.com/Leftyx/ConvertCsvToExcel/blob/master/ConvertCsvToExcel/Program.cs

【讨论】:

  • 是的,我也找到了链接,但你能解释一下,我应该为 IEnumerable 输入这个函数吗?
  • @Lec.Gael 例子里写的
  • 我的错误。 ReadCsv 方法将为您提供您正在寻找的 IEnumerable。我已经用那个方法编辑了代码
  • 是的,我会再试一次,但它会引发有关 Tryconvert 方法的错误,即使我将类复制到我的文件夹中也是如此。
猜你喜欢
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
  • 2013-05-19
  • 2020-07-28
  • 1970-01-01
  • 2020-05-06
相关资源
最近更新 更多