Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 C# библиотеки для массового заполнения xlsx  [new]
stinggga
Member

Откуда:
Сообщений: 416
Добрый день. Может кто-то подскажет библиотеку или кодом поможет. Запись в xlsx без отркытия excel. Объём большой.
3 янв 17, 15:25    [20070838]     Ответить | Цитировать Сообщить модератору
 Re: C# библиотеки для массового заполнения xlsx  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31435
stinggga
Добрый день. Может кто-то подскажет библиотеку или кодом поможет. Запись в xlsx без отркытия excel. Объём большой.
На T-SQL Автоматизация вывода отчетов в файлы xls (Excel)
Если нужно на C# - лучше спрашивать в форуме по C# (непонятно, почему вы здесь спросили, а не где то ещё?)
3 янв 17, 16:19    [20070915]     Ответить | Цитировать Сообщить модератору
 Re: C# библиотеки для массового заполнения xlsx  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
alexeyvg
Если нужно на C# - лучше спрашивать в форуме по C# (непонятно, почему вы здесь спросили, а не где то ещё?)

Видимо, человеку нужен SQLCLR вот и написал сюда.

2stinggga, Если хотите без офиса и без открытия excel, напишите SQL-CLR на выгрузку или загрузку. Правда придется поставить один из драйверов, в зависимости от системы.
Вот пример загрузки в таблицу, на его основе можно запилить и выгрузку.
+ c#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Server;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;

public partial class ExcelQuery
{
    [SqlProcedure]
    public static void GetExcelQuery(string fileName, string Query,string HDR = "YES")
    {
        if (HDR != "YES")
            HDR = "NO";

        string ExcelConnectionString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR={1}"";OLE DB Services=-4", fileName, HDR);

        DataTable excelDataTable = new DataTable();

        using (OleDbConnection excel_conn = new OleDbConnection(ExcelConnectionString))
        {
            OleDbDataAdapter da = new OleDbDataAdapter(Query, excel_conn);
            da.Fill(excelDataTable);
            excel_conn.Close();
        }

        using (SqlConnection SQLConnection = new SqlConnection("context connection=true"))
        {            
            try
            {
                SQLConnection.Open();

                    //Собираем заголовок МЕТА данных
                    List<SqlMetaData> lstMetaData = new List<SqlMetaData>();
                    foreach (DataColumn col in excelDataTable.Columns)
                    {
                        SqlMetaData md = new SqlMetaData(col.ColumnName, SqlDbType.NVarChar, 2000);
                        lstMetaData.Add(md);
                    }

                    // Отправляем в пулл соединения ДатаСет
                    SqlDataRecord sdr = new SqlDataRecord(lstMetaData.ToArray());
                    SqlContext.Pipe.SendResultsStart(sdr);
                    foreach (DataRow item in excelDataTable.Rows)
                    {
                        int colnum = excelDataTable.Columns.Count;
                        for (int i = 0; i < colnum; i++)
                        {
                            sdr.SetString(i, item[i].ToString());
                        }
                        SqlContext.Pipe.SendResultsRow(sdr);
                    }

                    // Закрываем пулл
                    SqlContext.Pipe.SendResultsEnd();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                SQLConnection.Close();
            }
        }
    }
}

3 янв 17, 21:52    [20071634]     Ответить | Цитировать Сообщить модератору
 Re: C# библиотеки для массового заполнения xlsx  [new]
Alexander Us
Member

Откуда:
Сообщений: 1133
stinggga,

приходилось использовать EPPlus
впечатления оч. позитивные
3 янв 17, 23:00    [20071862]     Ответить | Цитировать Сообщить модератору
 Re: C# библиотеки для массового заполнения xlsx  [new]
uaggster
Member

Откуда:
Сообщений: 864
stinggga, если вывод в Эксель нужен без свистелок и перделок (ну, типа, вывод простого списка, возможно с некоторой раскраской) - можно сравнительно легко обойтись совсем без Экселя (драйверов, CLRов и т.д.), функциональностью одного select-a.
Есть замечательный формат Excel-XML-2003, который представляет из себя обычный xml, и открывается как обычная книга Excel.
5 янв 17, 14:02    [20074876]     Ответить | Цитировать Сообщить модератору
 Re: C# библиотеки для массового заполнения xlsx  [new]
Penner
Member

Откуда:
Сообщений: 338
http://www.tmssoftware.com/site/flexcelnet.asp
5 янв 17, 14:26    [20074962]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить