Чтение и запись файлов Excel C#



Есть ли простая в реализации библиотека, которая может быть использована для чтения файлов excel и может быть создана позже?
это мой лучший выбор?



Http://support.microsoft.com/kb/302084

764   10  

10 ответов:

Если вы хотите посвятить себя более поздней версии Excel (2007+), вы также можете взглянуть на OpenXML SDK. Это бесплатно, не привязывает вас к тому, что MS Office установлен на машине, на которой он будет работать, и есть довольно много доступных ресурсов о том, как использовать его онлайн (включая блоги из команды OpenXML).

Попробуйте это: http://epplus.codeplex.com

EPPlus-это библиотека .net, которая читает и записывает файлы Excel 2007/2010 использование формата Open Office Xml (xlsx).

Есть пакет excel plus:

Http://epplus.codeplex.com/

Работает только на xlsx, но Office 2003 все равно работает.

Вы можете использовать ExcelLibrary , хотя это работает для .только xls, который имеет формат 2003

Цель этого проекта-предоставить собственное решение .NET для создания, чтения и изменения файлов Excel без использования COM-взаимодействия или OLEDB-соединения.

У меня был шанс использовать EPPLUS ,это было замечательно :) ,он работает для нового формата excel .xlsx, который используется в 2007/2010

EPPlus-это библиотека .net, вы можете читать и записывать файлы excel, создавать диаграммы ,картинки, фигуры... и многое другое

Также взгляните на это так что пост

Я использовал oledb, interop и только начал использовать Epplus. Пока что эпплус оказывается самым простым. http://epplus.codeplex.com/

Тем не менее, я только что опубликовал проблему, которую я имею с epplus, но я опубликовал некоторый код, который вы могли бы использовать в качестве ссылки.

C# epplus ошибка удалена часть: рисунок формы

Компания, в которой я работал, провела много исследований по этому вопросу и решила, что продукт SoftArtisans был их лучшим выбором: OfficeWriter

Мне всегда казалось странным, насколько слабой была поддержка чтения и записи Excel. Я уверен, что если вы используете библиотеки Microsoft, вам все равно придется установить Excel, что является дополнительным расходом, как и OfficeWriter.

Вы можете либо перейти на VBA, либо использовать бесплатную библиотеку из FileHelpers. Если вы планируете купить некоторые коммерческие решения, я бы рекомендовал ASPOSE

Согласно этому веб-сайту необходимо включить ссылку на библиотеку объектов Microsoft Excel 12.0. Оттуда вам нужно сделать несколько вещей, чтобы открыть файл. На веб-сайте есть образец кода.

PS-Извините, что это не слишком подробно, но я не смог найти ссылку разработчика Microsoft Office с более подробной информацией.

Я использовал ExcelLibrary с очень большими результатами! (до сих пор он поддерживает Excel 2003 или более низкие версии).

Http://code.google.com/p/excellibrary/

Я ExcelDataReader для чтения и вышеупомянутый EPPlus для написания. Вот пример.

Вот пример чтения с ним:

            FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);

        // Reading from a binary Excel file ('97-2003 format; *.xls)
        //            IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);

        // Reading from a OpenXml Excel file (2007 format; *.xlsx)
        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

        // DataSet - The result of each spreadsheet will be created in the result.Tables
        DataSet result = excelReader.AsDataSet();

        // Free resources (IExcelDataReader is IDisposable)
        excelReader.Close();

        var cdm = new ValueSetRepository();

        for (int i = 0; i < result.Tables.Count; i++)
        {
            // CHECK if tableNames filtering is specified
            if (tableNames != null)
            {
                // CHECK if a table matches the specified tablenames
                var tablename = result.Tables[i].TableName;
                if (!tableNames.Contains(tablename))
                {
                    continue;
                }
            }

            var lookup = new ValueSetLookup();
            lookup.CmsId = result.Tables[i].Rows[2][0].ToString();
            lookup.NqfNumber = result.Tables[i].Rows[2][1].ToString();
            lookup.Data = new List<ValueSetAttribute>();

            int row_no = 2;
            while (row_no < result.Tables[i].Rows.Count) // i is the index of table
            // (sheet name) which you want to convert to csv
            {
                var currRow = result.Tables[i].Rows[row_no];
                var valueSetAttribute = new ValueSetAttribute()
                {
                    Id = currRow[0].ToString(),
                    Number = currRow[1].ToString(),
                    tName = currRow[2].ToString(),
                    Code = currRow[7].ToString(),
                    Description = currRow[8].ToString(),
                };

                lookup.Data.Add(valueSetAttribute);
                row_no++;
            }

            cdm.AddRecord(lookup);

Comments

    Ничего не найдено.