Запишите данные из листа Excel в текстовый файл с помощью С#.

Мне нужно записать данные из листа/книги Excel в текстовый файл с помощью С#.

Кроме того, я хочу, чтобы все данные рабочего листа Excel находились в одном текстовом файле.

Помимо чтения данных из листов Excel один за другим, а затем добавления их в существующий текстовый файл, есть ли другой простой способ сделать это?


person Archie    schedule 24.06.2009    source источник


Ответы (4)


Я бы предложил использовать OleDbDataReader с подключением строку с www.connectionstrings.com для чтения файла Excel. Вы можете использовать свой любимый метод, скажем, StreamWriter, выплевывать данные в текстовый файл.

person jason    schedule 24.06.2009

SpreadsheetGear для .NET может сделать это с помощью нескольких строк кода:

using System;
using SpreadsheetGear;

namespace WorkbookToCSV
{
    class Program
    {
        static void Main(string[] args)
        {
            string inputFilename = @"c:\CSVIn.xlsx";
            string outputFilename = @"c:\CSVOut.csv";
            // Create the output stream.
            using (System.IO.FileStream outputStream = new System.IO.FileStream(outputFilename, System.IO.FileMode.Create, System.IO.FileAccess.Write))
            {
                // Load the source workbook.
                IWorkbook workbook = Factory.GetWorkbook(inputFilename);
                foreach (IWorksheet worksheet in workbook.Worksheets)
                {
                    // Save to CSV in a memory buffer and then write it to
                    // the output FileStream.
                    byte[] csvBuffer = worksheet.SaveToMemory(FileFormat.CSV);
                    outputStream.Write(csvBuffer, 0, csvBuffer.Length);
                }
                outputStream.Close();
            }
        }
    }
}

Вы можете скачать бесплатную пробную версию здесь и попробовать сами.

Отказ от ответственности: я владею SpreadsheetGear LLC

person Joe Erickson    schedule 24.06.2009

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Globalization;

namespace Module2
{
    public class Archives
    {
        public void readArchive()
        {
            //this will read from the archive
            StreamReader SR;
            string S;
            int i = 0;
            SR = File.OpenText(@"the path here for the excel archive");

            S = SR.ReadToEnd();
            SR.Close();
            Console.WriteLine(S);
            string[] words = S.Split(';');
            Array.Sort(words);
            for (i = 0; i < words.Length; i++)
                Console.WriteLine(words[i]);

            //this will create the archive
            StreamWriter SW;
            SW = File.CreateText(@"the path here for the .txt");
            for (i = 0; i < words.Length; i++)
                SW.WriteLine(words[i]);
            SW.Close();
        }
    }
}

Будет читать, разбивать текст, складывая их в массив и записывать каждое слово в .txt файл.. Наверное, все..

person Daniel    schedule 24.06.2009
comment
ну, я попытался прочитать файл xlsx с этим кодом, но он печатает только какие-то странные данные. - person Archie; 25.06.2009
comment
Я думаю, это то, как Excel разделяет столбцы и строки. Он использует ;, вот и все? - person Daniel; 25.06.2009
comment
Я просто скопировал вставленный код, но он все равно не работает должным образом. Он печатает какой-то код аски.. - person Archie; 26.06.2009
comment
Он возвращает код ASCII, поэтому, вероятно, это неправильный способ чтения файла Excel. - person sohaiby; 13.07.2017

Есть много способов сделать это. Попробуйте найти Excel в поле поиска.

В вашем случае, я полагаю, самым простым вариантом будет автоматизировать Excel, чтобы открыть книгу Excel, а затем использовать функцию «Сохранить как», чтобы сохранить ее в формате CSV.

person Rune Grimstad    schedule 24.06.2009
comment
Я думаю, ему нужно вывести несколько листов в один файл CSV. Автоматизация функции SaveAs для сохранения в формате CSV приведет к созданию нескольких файлов (которые, я думаю, вы всегда можете объединить, но это может немного усложниться). В остальном хорошее предложение. - person John M Gant; 24.06.2009