Как преобразовать CSV в файл .xlsx? - PullRequest
0 голосов
/ 18 февраля 2019

Я французский студент в инженерной школе.У меня есть работа в моей компании (да, я тоже работаю).

Я уже разработал приложение, которое принимает входной файл xlsx, я использую библиотеку NPOI.Но теперь мне нужно взять CSV во входном файле, я попытался несколько вещей без успеха.Мне просто нужно преобразовать CSV-файл в XSSFworkbook и лист.

Я новичок, но я действительно хочу улучшить свои компетенции с помощью c #.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 18 февраля 2019

Я нашел на 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

...