如何将csv转换为.xlsx文件?

时间:2019-02-18 13:47:31

标签: c# csv xlsx

我是工科学校的法国学生。 我要在公司工作(也是,我也要工作)。

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我在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);
    }
}

原始topic