Member 12692000 Ответов: 2

Как преобразовать текстовый файл с некоторым маркером-разделителем в файл xls или xlsx?


У меня есть несколько текстовых файлов, которые выглядят так этот. Символ @@@ в файле отмечает начало нового столбца. Я хочу использовать Microsoft Excel 14.0 Object Library или любую другую бесплатную библиотеку для преобразования этого файла в файл excel, например этот.

Кто-нибудь может помочь?

Что я уже пробовал:

Я совершенно ничего не понимаю в этом вопросе. Я подумывал о том, чтобы использовать split метод в текстовом файле чтобы получить содержимое для каждой строки и столбца но понятия не имею как его реализовать

Nelek

Другая возможность может заключаться в том, чтобы просто заменить эти разделители на ";" и сохранить файл как *.CSV
Excel уже имеет много собственных функциональных возможностей, чтобы справиться с этим.
Или я что-то упускаю?

Member 12692000

Как реализовать преобразование текста в столбец с разделителем с помощью c#?

2 Ответов

Рейтинг:
2

Richard MacCutchan

Вам нужно будет прочитать каждую строку и разделить поля между строками"@@@". Затем вы можете создать новый файл Excel с помощью Microsoft.Офис.Взаимодействие.Пространство Имен Excel | Microsoft Docs[^]


Member 12692000

Можете ли вы показать некоторый код относительно цикла, который добавляет значения из полей, разделенных между строками"@@@", в файл excel? Это будет очень полезно.

Richard MacCutchan

Смотреть ниже.

Рейтинг:
2

Richard MacCutchan

Здесь показаны основы сохранения информации в книге Excel. Вам просто нужно изменить его в соответствии с вашими собственными конкретными требованиями. Если вам не нужны заголовки столбцов, то просто опустите первый цикл и оставьте номер строки равным 1.

using Excel = Microsoft.Office.Interop.Excel;


void Save()
{
    //Create an Excel application instance
    Excel.Application excelApp = new Excel.Application();

    //Create an Excel workbook instance and open it from the predefined location
    Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(Type.Missing);
    Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add(Type.Missing);
    excelWorkSheet.Name = "mydata";

    int row = 1;
    int column = 1;
    for // a loop for all the column names
    {
        // row 1 contains column headers
        excelWorkSheet.Cells[row, column] = // text of the column header
        ++column;
    }

    int row = 2;    // leave as 1 if no column headers
    foreach (string str in // the lines of text)
    {
        string[] fields = str.Split(new char[]{ '@', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
        for (column = 0; column < fields.length; ++column)
        {
            excelWorkSheet.Cells[row, column + 1] = fields[column];
        }
        row++;
    }
    excelWorkBook.SaveAs(fileName);
    excelWorkBook.Close();
    excelApp.Quit();
}