EPPlus converting csv and missing the comma from a double

帅比萌擦擦* 提交于 2019-12-13 02:37:19

问题


I'm trying to convert a CSV file to xlsx file using the following code:

        string csvFileName = path;

        string nomeArquivo = Path.Combine(serverpath, RandomString(10) + ".xlsx");

        string worksheetsName = "b2w";
        bool firstRowIsHeader = false;
        var format = new ExcelTextFormat();
        format.Delimiter = ';';
        format.EOL = "\n";              // DEFAULT IS "\r\n";
                                          // format.TextQualifier = '"';

        using (ExcelPackage package = new ExcelPackage(new FileInfo(nomeArquivo)))
        {
            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetsName);
            worksheet.Cells["A1"].Value = "Status Pedido";
            worksheet.Cells["B1"].Value = "Site Origem";
            worksheet.Cells["C1"].Value = "Número Pedido";
            worksheet.Cells["D1"].Value = "Número Entrega";
            worksheet.Cells["E1"].Value = "Total Pedido";
            worksheet.Cells["F1"].Value = "CPF";
            worksheet.Cells["G1"].Value = "Nome Completo";
            worksheet.Cells["H1"].Value = "Endereço";
            worksheet.Cells["I1"].Value = "Número";
            worksheet.Cells["J1"].Value = "Complemento";
            worksheet.Cells["K1"].Value = "Referencia";
            worksheet.Cells["L1"].Value = "Bairro";
            worksheet.Cells["M1"].Value = "CEP";
            worksheet.Cells["N1"].Value = "Estado";
            worksheet.Cells["O1"].Value = "Cidade";
            worksheet.Cells["P1"].Value = "Merda1";
            worksheet.Cells["Q1"].Value = "Telefone Fixo";
            worksheet.Cells["R1"].Value = "Telefone Celular";
            worksheet.Cells["S1"].Value = "Merda2";
            worksheet.Cells["T1"].Value = "Sku Lojista";
            worksheet.Cells["U1"].Value = "Merda3";
            worksheet.Cells["V1"].Value = "Quantidade";
            worksheet.Cells["W1"].Value = "Valor unitário";
            worksheet.Cells["X1"].Value = "Valor Frete";
            worksheet.Cells["Y1"].Value = "Data Entrega";
            worksheet.Cells["Z1"].Value = "Valor Adicional";
            worksheet.Cells["A2"].LoadFromText(new FileInfo(csvFileName), format, OfficeOpenXml.Table.TableStyles.Medium27, firstRowIsHeader);
            package.Save();

            B2wExcelInsertPrimeiro InsertData = new B2wExcelInsertPrimeiro(nomeArquivo);
            InsertData.Insert();
        }

After the convertion, it saves the file but the double values like 319,98 are being saved as 31998.

What am I doing wrong?


回答1:


Looks like a CultureInfo problem. For example, in the US we use . instead of , to demark the decimal value of a double. So if you import a number like that the comma would be ignored. If you use a culture which has the NumberDecimalSeparator set to a comma it should work. For example:

format.Culture = new CultureInfo("de-DE"); //Using German cultureinfo

should solve the problem. You can get a good list of cultures from here:

http://www.csharp-examples.net/culture-names/



来源:https://stackoverflow.com/questions/36927002/epplus-converting-csv-and-missing-the-comma-from-a-double

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!