需要将科学价值转化为文本

Need to convert scientific value to text

我正在尝试将 csv 转换为 xls,其中有银行帐号(16 位)需要将其转换为文本

我尝试使用 EPPlus 包,通过它可以轻松生成 xls,但银行帐户列被转换为科学 value.Also 尝试将列转换为数字和文本,但那不起作用

    private void csvToXls(string source,string destination,string fileName)
    {
        string csvFileName = source;
        string excelFileName = destination+"/"+fileName+".xls";

        string worksheetsName = "sheet 1";

        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(excelFileName)))
        {
            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetsName);
            worksheet.Cells["A1"].LoadFromText(new FileInfo(csvFileName), format, OfficeOpenXml.Table.TableStyles.None, firstRowIsHeader);

            foreach (var cell in worksheet.Cells["C:C"])
            {
                cell.Value = Convert.ToString(cell.Value);

            }

            foreach (var cell in worksheet.Cells["AC:AC"])
            {
                cell.Value = Convert.ToString(cell.Value); 
            }
            worksheet.Cells["C:C"].Style.Numberformat.Format = "#0";
            worksheet.Cells["C:C"].Style.Numberformat.Format = "@";
            worksheet.Cells["AC:AC"].Style.Numberformat.Format = "@";


            package.Save();
        }
    }

需要将列转换为不科学的文本value.Please建议

输入:在 test.csv 下方有输入

IMDATA||12345678910124567895274|1|名称||||||||测试||||||||||测试||||3301003726558|TDATASTING|测试|27-09-2019

获取输出:

预期输出:

你需要为每一列提供eDataTypesLoadFromText的方法,如果没有为该列提供类型,它将默认设置为General

因此,将 `eDataTypes 提供给 ExcelTextFormat。

我刚刚添加了 3 列并且效果很好。

public static void csvToXls(string source, string destination, string fileName)
{
    string csvFileName = source;
    string excelFileName = destination + "/" + fileName + ".xls";

    string worksheetsName = "sheet 1";
    bool firstRowIsHeader = false;

    var format = new ExcelTextFormat();
    var edataTypes = new eDataTypes[] { eDataTypes.String, eDataTypes.String, eDataTypes.String };
    format.DataTypes = edataTypes;
    format.Delimiter = '|';
    format.EOL = "\n";              // DEFAULT IS "\r\n";
                                    // format.TextQualifier = '"';
    using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFileName)))
    {
        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetsName);
        worksheet.Cells["A1"].LoadFromText(new FileInfo(csvFileName), format, OfficeOpenXml.Table.TableStyles.None, firstRowIsHeader);

        package.Save();
    }
}

您可以尝试手动阅读文本

public static  void csvToXls(string source, string destination, string fileName)
{
    string csvFileName = source;
    string excelFileName = destination + "/" + fileName + ".xls";

    string worksheetsName = "sheet 1";

    using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFileName)))
    {
        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetsName);

        var text = File.ReadAllText(source);
        var rows = text.Split('\n');

        for (int rowIndex = 0; rowIndex < rows.Length; rowIndex++)
        {
            var excelRow = worksheet.Row(rowIndex+1);

            var columns = rows[rowIndex].Split('|');

            for (int colIndex = 0; colIndex < columns.Length; colIndex++)
            {
                worksheet.Cells[rowIndex +1, colIndex +1].Value = columns[colIndex];
            }
        }

        package.Save();
    }
}