Открыть csv файл разделенный ; в Excel из C#

120
11 декабря 2021, 13:10

Нужно открыть файл csv с разделителем ";" из C# в Excel.

 private void button1_Click(object sender, EventArgs e)
        {
            object oMissing = System.Reflection.Missing.Value;
            Excel.Application oExcel = new Excel.Application();

            oExcel.Visible = true;
            Excel.Workbooks oBooks = oExcel.Workbooks;
            Excel._Workbook oBook = null;

            string path2 = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            path2 = path2 + "\\Worksheet02.csv";
            //Open the file, using the 'path' variable
            oBook = oBooks.Open(path2, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
}

Excel запускается. Файл csv открывается, но не разделенный по столбцам. Если подставить файл csv с разделителем "," то откроется и файл будет разделен по столбцам.

Подскажите пожалуйста, как сделать что бы файл с разделителем ";" открывался в Excel разделенный по столбцам?

Answer 1
Excel.Application ex = new Excel.Application();
Excel.Workbooks wbs = ex.Workbooks;
wbs.OpenText(path,
    DataType:Excel.XlTextParsingType.xlDelimited, 
    Semicolon: true);

ответ найден по запросу "import csv delimiter excel c#"

https://stackoverflow.com/a/51611945/4423545

Answer 2

Спасибо rdorn за наводку. Нужно добавить в начало csv файла первую строку вида:

sep=;

То есть файл источник должен выглядеть так.

sep=;
Столбец1;Столбец2; Столбец3;Столбец4;Столбец5
...
СтолбецX1;СтолбецX2; СтолбецX3;СтолбецX4;СтолбецX5

И код любой заработает, и через OpenText и через Open.

READ ALSO
Как работать с адресами памяти в C#?

Как работать с адресами памяти в C#?

Есть адрес памяти 0x7C4540, и я хочу записать/получить из него значениеКак мне это сделать в C#?

201
Как сделать, чтобы пользователь должен был удерживать палец на экране и перемещать вверх, вниз?

Как сделать, чтобы пользователь должен был удерживать палец на экране и перемещать вверх, вниз?

Много где читал, но везде или свайп, или просто нажатие на экранКак сделать, чтобы пользователь должен был удерживать палец на экране и перемещать...

180
Получить только Id пользователя

Получить только Id пользователя

Есть код который достает из бд пользователя по его никнейму:

70
В уголку консольное время

В уголку консольное время

Хочу сделать в уголку экрана время которое постоянно обновляется, но при этом чтобы работала основная программаПрограмма это простая менюшка

93