Создать файл Excel (.XLS и .XLSX) из C #

Как создать электронную таблицу Excel с C #, не требуя установки Excel на компьютер, на котором выполняется код?

вопрос задан 29.09.2008
mistrmark
3874 репутация

40 ответов


  • 896 рейтинг

    Вы можете использовать библиотеку под названием ExcelLibrary. Это бесплатная библиотека с открытым исходным кодом, размещенная на Google Code:

    ExcelLibrary

    Это выглядит как порт PHP ExcelWriter, который вы упомянули выше. Он не будет писать на новый. Формат xlsx пока отсутствует, но они работают над добавлением этой функциональности в.

    Это очень просто, маленький и простой в использовании. Кроме того, он имеет DataSetHelper, который позволяет вам использовать DataSets и DataTables для удобной работы с данными Excel.

    ExcelLibrary, кажется, все еще работает только для старого формата Excel (. xls), но в будущем возможно добавится поддержка новых форматов 2007/2010.

    Вы также можете использовать EPPlus , который работает только для файлов формата Excel 2007/2010 (. файлы xlsx).

    Есть несколько известных ошибок с каждой библиотекой, как отмечено в комментариях. В целом, EPPlus кажется лучшим выбором с течением времени. Кажется, что он также более активно обновляется и документируется.

    Кроме того, как отметил @ АртёмЦарионов ниже, EPPlus имеет поддержку сводных таблиц, а ExcelLibrary может иметь некоторую поддержку ( Проблема сводных таблиц в ExcelLibrary )

    Вот несколько ссылок для быстрого ознакомления:
    ExcelLibrary - GNU Lesser GPL
    EPPlus - GNU Lesser General Public License (LGPL)

    Вот пример кода для ExcelLibrary:

    Вот пример, берущий данные из базы данных и создающий из нее рабочую книгу. Обратите внимание, что код ExcelLibrary - это одна строка внизу:

    //Create the data set and table
    DataSet ds = new DataSet("New_DataSet");
    DataTable dt = new DataTable("New_DataTable");
    
    //Set the locale for each
    ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
    dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
    
    //Open a DB connection (in this example with OleDB)
    OleDbConnection con = new OleDbConnection(dbConnectionString);
    con.Open();
    
    //Create a query and fill the data table with the data from the DB
    string sql = "SELECT Whatever FROM MyDBTable;";
    OleDbCommand cmd = new OleDbCommand(sql, con);
    OleDbDataAdapter adptr = new OleDbDataAdapter();
    
    adptr.SelectCommand = cmd;
    adptr.Fill(dt);
    con.Close();
    
    //Add the table to the data set
    ds.Tables.Add(dt);
    
    //Here's the easy part. Create the Excel worksheet from the data set
    ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);
    

    Создать файл Excel так просто. Вы также можете вручную создавать файлы Excel, но вышеперечисленные функции меня поразили.

    ответ дан Mike Webb, с репутацией 5040, 8.04.2010
  • 503 рейтинг

    Если вы довольны форматом xlsx, попробуйте мой codeplex проект GitHub. EPPlus . Начал с исходного кода из ExcelPackage, но сегодня это полное переписывание. Поддерживает диапазоны, стилизацию ячеек, диаграммы, формы, картинки, диапазоны имен, автофильтр и многое другое.

    ответ дан Jan Källman, с репутацией 331, 29.03.2010
  • 153 рейтинг

    Я успешно использовал следующие проекты с открытым исходным кодом:

    • ExcelPackage для форматов OOXML (Office 2007)

    • НКО для. Формат XLS (Office 2003). НКОИ 2. 0 (Alpha) также поддерживает XLSX.

    Посмотрите на мои сообщения в блоге:

    Создание электронных таблиц Excel. XLS и. XLSX в C #

    NPOI с таблицей Excel и динамической диаграммой

    ответ дан Leniel Maccaferri, с репутацией 78327, 20.06.2009
  • 147 рейтинг

    А как насчет использования Open XML SDK 2. 0 для Microsoft Office?

    Несколько преимуществ:

    • Не требует установки Office
    • Сделано Microsoft = достойная документация MSDN
    • Всего один. Net dll для использования в проекте
    • SDK поставляется со многими инструментами, такими как diff, validator и т. Д.

    Ссылки:

    ответ дан Pellared, с репутацией 922, 16.08.2011
  • 97 рейтинг

    Вы можете использовать OLEDB для создания и работы с файлами Excel. Проверьте это: Чтение и запись Excel с использованием OLEDB .

    Типичный пример:

    using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\temp\\test.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
    {
      conn.Open();
      OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] string, [Column2] string)", conn);
      cmd.ExecuteNonQuery();
    }
    

    РЕДАКТИРОВАТЬ - Еще несколько ссылок:

    ответ дан Panos, с репутацией 16598, 29.09.2008
  • 75 рейтинг

    Коммерческое решение, SpreadsheetGear for. NET сделает это.

    Вы можете увидеть живой ASP. NET (C # и VB) образцы здесь и скачать оценочную версию здесь .

    Отказ от ответственности: У меня есть SpreadsheetGear LLC

    ответ дан Joe Erickson, с репутацией 5937, 24.01.2009
  • 58 рейтинг

    Несколько вариантов, которые я использовал:

    Если XLSX является обязательным: ExcelPackage - хорошее начало, но оно прекратилось, когда разработчик прекратил работу над ним. Оттуда взял ExML и добавил несколько функций. ExML не плохой вариант, я все еще использую его на нескольких производственных веб-сайтах.

    Для всех моих новых проектов, я использую НКО . Порт NET Apache POI . НКОИ 2. 0 (Альфа) также поддерживает XLSX.

    ответ дан Nate, с репутацией 1484, 1.06.2009
  • 57 рейтинг

    Чрезвычайно легким вариантом может быть использование таблиц HTML. Просто создайте теги head, body и table в файле и сохраните его как файл с помощью. расширение xls. Существуют специфические атрибуты Microsoft, которые можно использовать для оформления вывода, включая формулы.

    Я понимаю, что вы можете не кодировать это в веб-приложении, но вот пример композиции файла Excel через таблицу HTML. Эту технику можно использовать, если вы кодируете консольное приложение, настольное приложение или службу.

    ответ дан Forgotten Semicolon, с репутацией 11754, 29.09.2008
  • 44 рейтинг

    Вы можете использовать ExcelXmlWriter .

    Работает нормально.

    ответ дан Joe Erickson, с репутацией 5937, 12.02.2009
  • 42 рейтинг

    Возможно, вы захотите проверить классы взаимодействия . Вы говорите, нет OLE (что это не так), но классы взаимодействия очень просты в использовании.

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

    Пожалуйста, обратите внимание на позицию Microsoft по этому вопросу:

    Microsoft в настоящее время не рекомендует и не поддерживает, Автоматизация приложений Microsoft Office от любых без присмотра, неинтерактивное клиентское приложение или компонент (включая ASP, ASP. NET, DCOM и NT Services), поскольку Office может работать нестабильно поведение и / или тупик, когда Office работает в этой среде.

    ответ дан GEOCHET, с репутацией 18294, 29.09.2008
  • 41 рейтинг

    Если вы создаете файлы Excel 2007/2010, попробуйте этот проект с открытым исходным кодом: https: // github. com / closedxml / closedxml

    Предоставляет объектно-ориентированный способ манипулирования файлами (аналогично VBA), не имея дело с проблемами документов XML. Можно использовать по любому. NET язык, как C # и Visual Basic (VB).

    ClosedXML позволяет создавать файлы Excel 2007/2010 без Excel приложение. Типичный пример - создание отчетов Excel в Интернете. сервер:

    var workbook = new XLWorkbook();
    var worksheet = workbook.Worksheets.Add("Sample Sheet");
    worksheet.Cell("A1").Value = "Hello World!";
    workbook.SaveAs("HelloWorld.xlsx");
    
    ответ дан Manuel, с репутацией 3045, 23.11.2010
  • 30 рейтинг

    Вот совершенно бесплатная библиотека C #, которая позволяет экспортировать из DataSet, DataTable или List<> в подлинный Excel 2007. файл xlsx, используя библиотеки OpenXML:

    http: // mikesknowledgebase. ком / страницы / CSharp / ExportToExcel. HTM

    Полный исходный код предоставляется - бесплатно - вместе с инструкциями и демонстрационным приложением.

    После добавления этого класса в ваше приложение вы можете экспортировать свой DataSet в Excel всего за одну строку кода:

    CreateExcelFile.CreateExcelDocument(myDataSet, "C:\\Sample.xlsx");
    

    Это не намного проще, чем это. , ,

    И это даже не требует, чтобы Excel присутствовал на вашем сервере.

    ответ дан Mike Gledhill, с репутацией 16062, 5.12.2011
  • 23 рейтинг

    Вы можете рассмотреть возможность создания файлов с использованием формата XML-таблицы . Это простой формат XML с использованием хорошо документированной схемы .

    ответ дан Sam Warwick, с репутацией 2639, 30.09.2008
  • 19 рейтинг

    Syncfusion Essential XlsIO может сделать это. Он не зависит от Microsoft Office, а также имеет специальную поддержку для различных платформ.

    Пример кода:

    //Creates a new instance for ExcelEngine.
    ExcelEngine excelEngine = new ExcelEngine();
    //Loads or open an existing workbook through Open method of IWorkbooks
    IWorkbook workbook = excelEngine.Excel.Workbooks.Open(fileName);
    //To-Do some manipulation|
    //To-Do some manipulation
    //Set the version of the workbook.
    workbook.Version = ExcelVersion.Excel2013;
    //Save the workbook in file system as xlsx format
    workbook.SaveAs(outputFileName);
    

    Весь набор элементов управления предоставляется бесплатно через программу по общественной лицензии , если вы соответствуете требованиям (доход менее 1 миллиона долларов США). Примечание: я работаю на Syncfusion.

    ответ дан Davis Jebaraj, с репутацией 270, 7.10.2016
  • 17 рейтинг

    Вы можете взглянуть на GemBox. Электронная таблица .

    У них есть бесплатная версия со всеми функциями, но не более 150 строк на листе и 5 листов на книгу, если это соответствует вашим потребностям.

    Мне еще не приходилось пользоваться им, но выглядит интересно.

    ответ дан ManiacZX, с репутацией 732, 29.09.2008
  • 13 рейтинг

    Различные доступные библиотеки Office 2003 XML работают очень хорошо для небольших файлов Excel. Тем не менее, я считаю большой размер большой рабочей книги, сохраненной в формате XML, проблемой. Например, рабочая книга, с которой я работаю, будет 40 МБ в новом (и по общему мнению, более плотно упакованном) формате XLSX и станет XML-файлом размером 360 МБ.

    Насколько мне показало мое исследование, существует два коммерческих пакета, которые позволяют выводить файлы в более старые двоичные форматы. Они являются:

    Ни один из них не дешевый (думаю, 500 долларов США и 800 долларов США). но оба работают независимо от самого Excel.

    Что мне было бы интересно, так это модуль вывода Excel для подобных OpenOffice. орг. Интересно, можно ли их портировать с Java на. Сеть.

    ответ дан biozinc, с репутацией 3645, 24.11.2008
  • 13 рейтинг

    OpenXML также является хорошей альтернативой, которая помогает избежать установки MS Excel на сервере. Open XML SDK 2. 0, предоставляемый Microsoft, упрощает задачу манипулирования пакетами Open XML и базовыми элементами схемы Open XML внутри пакета. Интерфейс прикладного программирования (XML) Open XML содержит много общих задач, которые разработчики выполняют с пакетами Open XML.

    Проверьте это OpenXML: Альтернатива, которая помогает избежать установки MS Excel на сервере

    ответ дан Sachin Dhir, с репутацией 127, 2.12.2015
  • 13 рейтинг

    Я согласен с генерацией электронных таблиц XML, вот пример того, как это сделать для C # 3 (все просто пишут об этом в VB 9: P) http: // www. Арон-пауэлл. com / linq-to-xml-to-excel

    ответ дан Aaron Powell, с репутацией 20199, 30.09.2008
  • 13 рейтинг

    Просто хочу добавить еще одну ссылку на стороннее решение, которое напрямую решает вашу проблему: http: // www. officewriter. com

    (Отказ от ответственности: я работаю на SoftArtisans, компанию, которая делает OfficeWriter)

    ответ дан Eisbaer, с репутацией 191, 23.08.2011
  • 13 рейтинг

    Ну,

    вы также можете использовать стороннюю библиотеку, такую ​​как Aspose .

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

    ответ дан Dimi Toulakis, с репутацией 4080, 10.11.2009
  • 11 рейтинг

    IKVM + POI

    Или вы можете использовать Interop. , ,

    ответ дан MagicKat, с репутацией 7700, 29.09.2008
  • 11 рейтинг

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

    Это коммерческий продукт, но вы получите полный исходный код, если купите его. Так что, я полагаю, вы могли бы скомпилировать его в свою сборку, если бы вы действительно этого хотели. В противном случае это всего лишь одна дополнительная сборка для xcopy - без настройки, установки или чего-то подобного.

    Я не думаю, что вы найдете способ сделать это без сторонних библиотек, как. NET Framework, очевидно, не имеет встроенной поддержки для него, а OLE Automation - это целый мир боли.

    ответ дан EMP, с репутацией 28391, 15.02.2009
  • 11 рейтинг

    Вот способ сделать это с помощью LINQ to XML, вместе с примером кода:

    Быстрый импорт и экспорт данных Excel с помощью LINQ to XML

    Это немного сложно, так как вы должны импортировать пространства имен и т. Д., Но это позволяет избежать любых внешних зависимостей.

    (Также, конечно, это VB. NET, а не C #, но вы всегда можете изолировать VB. NET вещи в своем собственном проекте, чтобы использовать XML Literals, и делать все остальное в C #. )

    ответ дан Ryan Lundy, с репутацией 152014, 30.09.2008
  • 11 рейтинг

    Вы можете создавать красиво отформатированные файлы Excel, используя эту библиотеку: http: // officehelper. CodePlex. ком / документация
    Смотрите ниже образец:

    using (ExcelHelper helper = new ExcelHelper(TEMPLATE_FILE_NAME, GENERATED_FILE_NAME))
    {
        helper.Direction = ExcelHelper.DirectionType.TOP_TO_DOWN;
        helper.CurrentSheetName = "Sheet1";
        helper.CurrentPosition = new CellRef("C3");
    
        //the template xlsx should contains the named range "header"; use the command "insert"/"name".
        helper.InsertRange("header");
    
        //the template xlsx should contains the named range "sample1";
        //inside this range you should have cells with these values:
        // ,  and , which will be replaced by the values from the getSample()
        CellRangeTemplate sample1 = helper.CreateCellRangeTemplate("sample1", new List {"name", "value", "comment"}); 
        helper.InsertRange(sample1, getSample());
    
        //you could use here other named ranges to insert new cells and call InsertRange as many times you want, 
        //it will be copied one after another;
        //even you can change direction or the current cell/sheet before you insert
    
        //typically you put all your "template ranges" (the names) on the same sheet and then you just delete it
        helper.DeleteSheet("Sheet3");
    }        
    

    где образец выглядит так:

    private IEnumerable> getSample()
    {
        var random = new Random();
    
        for (int loop = 0; loop < 3000; loop++)
        {
            yield return new List {"test", DateTime.Now.AddDays(random.NextDouble()*100 - 50), loop};
        }
    }
    
    ответ дан Manuel, с репутацией 3045, 3.12.2010
  • 11 рейтинг

    Некоторые сторонние поставщики компонентов, такие как Infragistics или Syncfusion, предоставляют очень хорошие возможности экспорта в Excel, которые не требуют установки Microsoft Excel.

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

    Если ваш экспорт предназначен для выполнения на стороне сервера с акцентом на экспортируемые данные и без ссылки на пользовательский интерфейс, то я бы выбрал один из бесплатных вариантов с открытым исходным кодом (например, г. ExcelLibrary).

    Ранее я принимал участие в проектах, которые пытались использовать автоматизацию на стороне сервера в пакете Microsoft Office. Основываясь на этом опыте, я настоятельно рекомендую против такого подхода.

    ответ дан Simen S, с репутацией 2731, 16.02.2011
  • 11 рейтинг
    public class GridViewExportUtil
    {
        public static void Export(string fileName, GridView gv)
        {
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.AddHeader(
                "content-disposition", string.Format("attachment; filename={0}", fileName));
            HttpContext.Current.Response.ContentType = "application/ms-excel";
    
            using (StringWriter sw = new StringWriter())
            {
                using (HtmlTextWriter htw = new HtmlTextWriter(sw))
                {
                    //  Create a form to contain the grid
                    Table table = new Table();
    
                    //  add the header row to the table
                    if (gv.HeaderRow != null)
                    {
                        GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
                        table.Rows.Add(gv.HeaderRow);
                    }
    
                    //  add each of the data rows to the table
                    foreach (GridViewRow row in gv.Rows)
                    {
                        GridViewExportUtil.PrepareControlForExport(row);
                        table.Rows.Add(row);
                    }
    
                    //  add the footer row to the table
                    if (gv.FooterRow != null)
                    {
                        GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
                        table.Rows.Add(gv.FooterRow);
                    }
    
                    //  render the table into the htmlwriter
                    table.RenderControl(htw);
    
                    //  render the htmlwriter into the response
                    HttpContext.Current.Response.Write(sw.ToString());
                    HttpContext.Current.Response.End();
                }
            }
        }
    
        /// 
    /// Replace any of the contained controls with literals ///
     
        /// 
        private static void PrepareControlForExport(Control control)
        {
            for (int i = 0; i < control.Controls.Count; i++)
            {
                Control current = control.Controls[i];
                if (current is LinkButton)
                {
                    control.Controls.Remove(current);
                    control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
                }
                else if (current is ImageButton)
                {
                    control.Controls.Remove(current);
                    control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
                }
                else if (current is HyperLink)
                {
                    control.Controls.Remove(current);
                    control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
                }
                else if (current is DropDownList)
                {
                    control.Controls.Remove(current);
                    control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
                }
                else if (current is CheckBox)
                {
                    control.Controls.Remove(current);
                    control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
                }
    
                if (current.HasControls())
                {
                    GridViewExportUtil.PrepareControlForExport(current);
                }
            }
        }
    }
    

    Привет, это решение - экспортировать сетку в файл Excel, это может помочь вам.

    ответ дан Gaurav, с репутацией 1, 28.04.2011
  • 9 рейтинг

    Самый простой и быстрый способ создать файл Excel из C # - использовать инструмент повышения производительности Open XML. Средство повышения производительности Open XML поставляется с установкой Open XML SDK. Инструмент обратный инжиниринг любого файла Excel в код C #. Затем можно использовать код C # для повторной генерации этого файла.

    Обзор вовлеченного процесса:

    1. Установите Open XML SDK с помощью инструмента.
    2. Создайте файл Excel, используя последний клиент Excel с желаемым внешним видом. Назовите это DesiredLook.xlsx.
    3. С помощью инструмента откройте DesiredLook.xlsx и нажмите кнопку Reflect Code рядом с верхней частью. enter image description here
    4. Код C # для вашего файла будет создан на правой панели инструмента. Добавьте это в свое решение C # и создайте файлы с таким желаемым внешним видом.

    В качестве бонуса этот метод работает для любых файлов Word и PowerPoint. Как разработчик C #, вы будете вносить изменения в код в соответствии со своими потребностями.

    Я разработал простое приложение WPF для github , которое будет работать в Windows для этой цели. Существует класс-заполнитель GeneratedClass, куда вы можете вставить сгенерированный код. Если вы вернетесь к одной версии файла, он сгенерирует файл Excel следующим образом:

    enter image description here

    ответ дан Taterhead, с репутацией 2825, 27.02.2017
  • 9 рейтинг

    Некоторые полезные автоматизации Excel в C #, вы можете найти по следующей ссылке.

    http: // csharp. нетто-информация. ком / Excel / CSharp-первенствует-учебник. HTM

    болтон.

    ответ дан Leniel Maccaferri, с репутацией 78327, 10.11.2009
  • 8 рейтинг

    Посмотрите примеры, как создавать файлы Excel.

    Есть примеры в C # и VB. NET

    Это менеджер файлов XLS XLSX и CSV Excel.

    http: // www. devtriogroup. com / ExcelJetcell / Samples

    ответ дан Bonnie Cornell, с репутацией 47, 12.04.2011
  • 7 рейтинг

    Вы когда-нибудь пробовали sylk?

    Раньше мы создавали листы Excel в классическом asp as sylk, и сейчас мы тоже ищем excelgenerater.

    Преимущества для sylk в том, что вы можете отформатировать ячейки.

    ответ дан Stefan Koelle, с репутацией 60, 4.11.2008
  • 6 рейтинг

    Я написал простой код для экспорта набора данных в Excel без использования объекта Excel с помощью System. IO. StreamWriter.

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

    public static void exportToExcel(DataSet source, string fileName)
    {
            const string endExcelXML = "";
            const string startExcelXML = "\r\n\r\n \r\n " +
                     "
    \r\n " +
                     "
    \r\n " +
                     "
    \r\n 
    \r\n " +
                     "
    \r\n 
    \r\n " +
                     "\r\n ";
            System.IO.StreamWriter excelDoc = null;
            excelDoc = new System.IO.StreamWriter(fileName);
    
            int sheetCount = 1;
            excelDoc.Write(startExcelXML);
            foreach (DataTable table in source.Tables)
            {
                int rowCount = 0;
                excelDoc.Write("");
                excelDoc.Write("
    "); excelDoc.Write(""); for (int x = 0; x < table.Columns.Count; x++) { excelDoc.Write(""); excelDoc.Write(table.Columns[x].ColumnName); excelDoc.Write(""); } excelDoc.Write(""); foreach (DataRow x in table.Rows) { rowCount++; //if the number of rows is > 64000 create a new page to continue output if (rowCount == 64000) { rowCount = 0; sheetCount++; excelDoc.Write(""); excelDoc.Write(" "); excelDoc.Write(""); excelDoc.Write(""); } excelDoc.Write(""); //ID=" + rowCount + " for (int y = 0; y < table.Columns.Count; y++) { System.Type rowType; rowType = x[y].GetType(); switch (rowType.ToString()) { case "System.String": string XMLstring = x[y].ToString(); XMLstring = XMLstring.Trim(); XMLstring = XMLstring.Replace("&", "&"); XMLstring = XMLstring.Replace(">", ">"); XMLstring = XMLstring.Replace("<", "<"); excelDoc.Write("" + ""); excelDoc.Write(XMLstring); excelDoc.Write(""); break; case "System.DateTime": //Excel has a specific Date Format of YYYY-MM-DD followed by //the letter 'T' then hh:mm:sss.lll Example 2005-01-31T24:01:21.000 //The Following Code puts the date stored in XMLDate //to the format above DateTime XMLDate = (DateTime)x[y]; string XMLDatetoString = ""; //Excel Converted Date XMLDatetoString = XMLDate.Year.ToString() + "-" + (XMLDate.Month < 10 ? "0" + XMLDate.Month.ToString() : XMLDate.Month.ToString()) + "-" + (XMLDate.Day < 10 ? "0" + XMLDate.Day.ToString() : XMLDate.Day.ToString()) + "T" + (XMLDate.Hour < 10 ? "0" + XMLDate.Hour.ToString() : XMLDate.Hour.ToString()) + ":" + (XMLDate.Minute < 10 ? "0" + XMLDate.Minute.ToString() : XMLDate.Minute.ToString()) + ":" + (XMLDate.Second < 10 ? "0" + XMLDate.Second.ToString() : XMLDate.Second.ToString()) + ".000"; excelDoc.Write("" + ""); excelDoc.Write(XMLDatetoString); excelDoc.Write(""); break; case "System.Boolean": excelDoc.Write("" + ""); excelDoc.Write(x[y].ToString()); excelDoc.Write(""); break; case "System.Int16": case "System.Int32": case "System.Int64": case "System.Byte": excelDoc.Write("" + ""); excelDoc.Write(x[y].ToString()); excelDoc.Write(""); break; case "System.Decimal": case "System.Double": excelDoc.Write("" + ""); excelDoc.Write(x[y].ToString()); excelDoc.Write(""); break; case "System.DBNull": excelDoc.Write("" + ""); excelDoc.Write(""); excelDoc.Write(""); break; default: throw (new Exception(rowType.ToString() + " not handled.")); } } excelDoc.Write(""); } excelDoc.Write(""); excelDoc.Write(" "); sheetCount++; } excelDoc.Write(endExcelXML); excelDoc.Close(); }
    ответ дан Harsha.Vaswani, с репутацией 709, 23.07.2015
  • 5 рейтинг

    Ищите ExtremeLY. Это довольно крутая библиотека, которая позволяет вам использовать формат OpenXML для генерации файлов OpenXML.

    Это также проект OpenSource.

    http: // www. extrememl. com /

    ответ дан Jens, с репутацией 2435, 22.11.2010
  • 4 рейтинг

    Решение с открытым исходным кодом Java - Apache POI . Может быть, есть способ настроить взаимодействие, но я не знаю достаточно о Java, чтобы ответить на этот вопрос.

    Когда я исследовал эту проблему, я использовал сборки Interop.

    ответ дан Nick, с репутацией 9309, 30.09.2008
  • 3 рейтинг

    Я также голосую за GemBox. Электронная таблица .

    Очень быстрый и простой в использовании, с множеством примеров на их сайте.

    Взял мои задачи отчетности на совершенно новый уровень скорости выполнения.

    ответ дан Leniel Maccaferri, с репутацией 78327, 22.10.2009
  • 3 рейтинг

    http: // www. CodeProject. ком / KB / CS / Excel_and_C_. aspx & lt; = почему бы просто не использовать встроенную мощь Windows, просто установить офис на сервере, любое приложение, которое вы устанавливаете, может быть автоматизировано.

    Гораздо проще просто использовать нативные методы.

    Если он установлен, вы можете использовать его, это самая удивительная и малоиспользуемая функция в Windows, это было Dubbed COM в старые добрые времена, и это экономит вам массу времени и усилий.

    Или еще проще, просто используйте ref lib MS Supplies - http: // csharp. нетто-информация. ком / Excel / CSharp создать-Excel. HTM

    ответ дан Craig Mc, с репутацией 305, 9.02.2011
  • 2 рейтинг

    Один действительно простой вариант, который часто упускают из виду, - это создать. Отчет rdlc с использованием Microsoft Reporting и экспорт в формате Excel. Вы можете создать его в Visual Studio и сгенерировать файл, используя:

    localReport.Render("EXCELOPENXML", null, ((name, ext, encoding, mimeType, willSeek) => stream = new FileStream(name, FileMode.CreateNew)), out warnings);
    

    Вы также можете экспортировать это сделать. док или. pdf, используя "WORDOPENXML" и "PDF" соответственно, и поддерживается на многих различных платформах, таких как ASP. NET и SSRS.

    Гораздо проще вносить изменения в визуальный конструктор, где вы можете видеть результаты и, поверьте мне, как только вы начнете группировать данные, форматировать заголовки групп, добавлять новые разделы, вы не захотите связываться с десятками узлов XML.

    ответ дан AlexDev, с репутацией 2209, 7.12.2017
  • 2 рейтинг

    Вы можете просто записать его в XML с использованием формата Excel XML и присвоить ему имя. Расширение XLS, и оно откроется с Excel. Вы можете контролировать все форматирование (полужирный, ширина и т. Д.) В заголовке вашего XML-файла.

    Есть пример XML из Википедии .

    ответ дан ScaleOvenStove, с репутацией 668, 9.07.2010
  • 1 рейтинг

    Некоторое время назад я создал библиотеку DLL поверх NPOI. Его очень просто использовать:

    IList dummyPeople = new List();
    //Add data to dummyPeople...
    IExportEngine engine = new ExcelExportEngine();
    engine.AddData(dummyPeople); 
    MemoryStream memory = engine.Export();
    

    Вы можете узнать больше об этом на здесь .

    Кстати, это 100% открытый исходный код. Не стесняйтесь использовать, редактировать и делиться;)

    ответ дан Vladimir Venegas, с репутацией 708, 27.09.2017
  • 1 рейтинг

    Если вы создаете таблицу данных или сетку данных из кода, вы можете сохранить все данные, используя этот простой метод. этот метод не рекомендуется, но он работает на 100%, даже если вы не устанавливаете MS Excel на вашем компьютере.

    try
     {
      SaveFileDialog saveFileDialog1 = new SaveFileDialog();
      saveFileDialog1.Filter = "Excel Documents (*.xls)|*.xls";
      saveFileDialog1.FileName = "Employee Details.xls";
      if (saveFileDialog1.ShowDialog() == DialogResult.OK)
      {
      string fname = saveFileDialog1.FileName;
      StreamWriter wr = new StreamWriter(fname);
      for (int i = 0; i < (DataTable.Rows.Count); i++)
      {
      for (int j = 0; j < DataTable.Columns.Count; j++)
      {
      if (DataTable.Rows[i][j] != null)
      {
      wr.Write(Convert.ToString(getallData.Rows[i][j]) + "\t");
      }
       else
       {
       wr.Write("\t");
       }
       }
       //go to next line
       wr.WriteLine();
       }
       //close file
       wr.Close();
       }
       }
       catch (Exception)
       {
        MessageBox.Show("Error Create Excel Sheet!");
       }
    
    ответ дан Gayan Chinthaka Dharmarathna, с репутацией 74, 5.04.2017
  • -6 рейтинг

    Я использую следующий код для создания файла Excel 2007, который создает файл и записывает в него, но когда я открываю файл, но он выдает ошибку, exel не может открыть файл Возможно, файл bcz поврежден или расширение файла несовместимо. но если бы я использовал. XLS для файла это работает штрафы

    for (int i = 0; i < TotalFile; i++)
    {
        Contact.Clear();
        if (innerloop == SplitSize)
        {
            for (int j = 0; j < SplitSize; j++)
            {
                string strContact = DSt.Tables[0].Rows[i * SplitSize + j][0].ToString();
                Contact.Add(strContact);
            }
            string strExcel = strFileName + "_" + i.ToString() + ".xlsx";
                             File.WriteAllLines(strExcel, Contact.ToArray());
        }
    }
    

    также см. Ссылку

    http: // dotnet-magic. Blogspot. в / 2011/10 / createformat-первенствует-файлы из-CNET. HTML

    ответ дан saurabh27, с репутацией 46, 20.12.2014