0

我从 .csv 文件(windows-1251 编码)中检索数据时遇到问题。我使用 Aspose Cells,这是我的代码:

public static IEnumerable<ElmarketByExcelModel> ElmarketByParce(string filePath)
{
    if (String.IsNullOrEmpty(filePath))
        throw new ArgumentException("should be not null", "filePath");

    //Opening an existing workbook
    var workbook = new Workbook(filePath);

    //Accessing first worksheet
    var worksheet = workbook.Worksheets[0];

    var cells = worksheet.Cells;

    var list = new List<ElmarketByExcelModel>(worksheet.Cells.Rows.Count);
    for (var i = 2; i < cells.Rows.Count + 1; i++)
    {
        var model = new ElmarketByExcelModel();

        var value = cells["A" + i].Value.ToString();

        var newValue = GetString(Encoding.Convert(Encoding.GetEncoding(workbook.Settings.Encoding.HeaderName), Encoding.Default, GetBytes(value)));

        var values = newValue.Split(';');
        foreach (var val in values)
        {
            Console.WriteLine(val);
        }

        list.Add(model);
    }

    return list.AsEnumerable();
}

当我尝试从单元格中获取数据时,我得到一个带有奇怪 字符的字符串

我试图将编码更改为不同的编码,但这无济于事。你能帮我解决这个问题吗?

4

1 回答 1

0

您可以使用 TextLoadOptions 在 Aspose.Cells 中加载编码的 CSV 文件。以下是我使用的示例代码:

TxtLoadOptions txtLoadOptions = new TxtLoadOptions(Aspose.Cells.LoadFormat.CSV);
txtLoadOptions.Encoding = Encoding.GetEncoding("windows-1251");

//Opening an existing workbook
var workbook = new Workbook("C:\\data\\Encoding.csv", txtLoadOptions);

//Accessing first worksheet
var worksheet = workbook.Worksheets[0];

var cells = worksheet.Cells;

for (var i = 1; i < cells.Rows.Count + 1; i++)
{
    var value = cells["A" + i].Value.ToString();
}

现在,它在我的最新Aspose.Cells版本中运行良好。如果您仍然遇到问题,请分享您的 CSV 以进行测试。

于 2014-03-22T09:59:02.230 回答