Считать кириллицу из .xlsm в C#

274
07 июля 2022, 10:10

Изначально моя программа принимала на вход CSV файл сохранённый в Unicode и нормально считывала с него данные, но пришлось перейти на Excel и вот тут я столкнулся с проблемой отображения содержимого файла .xlsx Что я делал:

Encoding win1251 = Encoding.GetEncoding("windows-1251");
string whole_file = File.ReadAllText(OpenCSVFile(), Encoding.GetEncoding(1251));
  • Поигрался с предложенными кодировками, Unicode, UTF-8, но результат один и тот же, отображаются некорректные символы.
  • На одном форуме нашёл Encoding.Default(), но это решение не помогло

Данные выглядят следующим образом:

Понимаю, что проблема в кодировке, но решить проблему не удалось. Буду рад услышать советы и рекомендации.

Программа отлично работала с CSV, но к сожалению часто CSV файлы "ломаются",съезжают строки

Сслылка на файл из примера https://wdho.ru/in0i/ex2007only_data&break.xlsx

Answer 1

Я использовал EPPlus 5. Ставим пакет

Код в форме такой

public partial class FormMain : Form
{
    public FormMain()
    {
        InitializeComponent();
        this._buttonOpen.Click += ButtonOpen_Click;
    }
    private void ButtonOpen_Click(object sender, EventArgs e)
    {
        if (_openFileDialog.ShowDialog() != DialogResult.OK)
            return;
        var stringBuilder = new StringBuilder();
        ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;
        using (var package = new ExcelPackage(new FileInfo(_openFileDialog.FileName)))
        {
            var page = package.Workbook.Worksheets["Page1"];
            for (int row = 1; row <= page.Dimension.End.Row; row++)
            {
                for (int col = 1; col <= page.Dimension.End.Column; col++)
                {
                    stringBuilder.AppendLine($"Строка: {row}, столбец: {col}," +
                        $" {page.Cells[row, col].Value?.ToString().Trim()}");
                }
            }
        }
        _textBoxOutput.Text = stringBuilder.ToString();
    }
}

Работает это так

READ ALSO
Как изменить размер изображения перезаписав файл

Как изменить размер изображения перезаписав файл

Есть метод для изменения размера картинкиКак сделать чтобы он перезаписывал файл

304
Как обойти заданную директорию?

Как обойти заданную директорию?

Изначально в программе задана директория:

285
Silverlight 5 и Visul Studio 2019

Silverlight 5 и Visul Studio 2019

В общем, дело было так: Все прекрасно работало до тех пор, пока не обновил Visual Studio и не столкнулся с проблемами, когда Visual Studio не понимала синтаксис...

214
Компиляция кода запускаемого на Mac имея Visual Studio Windows

Компиляция кода запускаемого на Mac имея Visual Studio Windows

Собрал небольшое консольное приложениеПод Windows компилируется без проблем

194