none
Criar arquivo do Excel e copiar um datatable RRS feed

  • Pergunta

  • Como eu faço para criar arquivos do excel dentro do C#?

    Eu preciso copiar o contúdo de um datatable para um arquivo do Excel, mas não consegui descobrir qual o namespace que eu preciso usar para criar os arquivos do excel.

    quinta-feira, 12 de agosto de 2010 21:01

Respostas

  • Como eu faço para criar arquivos do excel dentro do C#?

    Eu preciso copiar o contúdo de um datatable para um arquivo do Excel, mas não consegui descobrir qual o namespace que eu preciso usar para criar os arquivos do excel.

    Aqui tem um exemplo completo escrito pela Deborah, com o namespace que voce precisa imortar tambem:

    http://msmvps.com/blogs/deborahk/archive/2009/07/23/writing-data-from-a-datatable-to-excel.aspx

    In C#:

    using Excel = Microsoft.Office.Interop.Excel; 
    using System.Reflection;

    In VB:

    Imports Excel = Microsoft.Office.Interop.Excel


    Just Be Humble Malange!
    quinta-feira, 12 de agosto de 2010 21:29
    Moderador
  • Olá,
    Este código faz isso, vc pode dar uma melhorada nele...


    primeiro vc cria o excel

     

    private static void CreateFile()

    {

     

     

    using (OleDbConnection connection =

     

    new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\\temp\\teste.xls;Extended Properties='Excel 8.0;HDR=Yes'"))

    {

    connection.Open();

     

    OleDbCommand command = new OleDbCommand(@"CREATE TABLE [Sheet1](

    [CodigoCliente] string, [NomeCliente] string)"

     

    );

    command.Connection = connection;

    command.ExecuteNonQuery();

    connection.Close();

    }

    }

    // depois popula ele com os dados do dataset ou datable

    private

     

    static void LoadFile(string date)

    {

     

    using(OleDbConnection xlsConnection =

     

    new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\\temp\\Matches.xls;Extended Properties='Excel 8.0;HDR=Yes'")

     

    if (null != ds)

    {

    xlsConnection.Open();

     

    OleDbCommand xlsCommand = new OleDbCommand();

    xlsCommand.Connection = xlsConnection;

     

    foreach(DataRow dsRow in ds.Tables[0].Rows)

    {

     

    string side = dsRow[9].ToString().Equals("S") ? "V" : "C";

     

    string symbol = dsRow[14].ToString();

     

    string primaryKey = dsRow[13].ToString() + dsRow[14].ToString();

     

    if (dsRow[15].ToString() == "FRA")

    {

    primaryKey+=

    "F";

    symbol +=

    "F";

    }

    primaryKey += side;

     

    xlsCommand.CommandText =

    @"Insert into [Sheet1]

    (CodigoCliente, NomeCliente )

    values

    (

    '"

     

    + primaryKey + "', '" + dsRow[0] + "','" + dsRow[1] + "')";

    xlsCommand.ExecuteNonQuery();

    }

    xlsConnection.Close();

    }

    }

    Testa aí

    Anderson

    quinta-feira, 12 de agosto de 2010 21:31

Todas as Respostas

  • Como eu faço para criar arquivos do excel dentro do C#?

    Eu preciso copiar o contúdo de um datatable para um arquivo do Excel, mas não consegui descobrir qual o namespace que eu preciso usar para criar os arquivos do excel.

    Aqui tem um exemplo completo escrito pela Deborah, com o namespace que voce precisa imortar tambem:

    http://msmvps.com/blogs/deborahk/archive/2009/07/23/writing-data-from-a-datatable-to-excel.aspx

    In C#:

    using Excel = Microsoft.Office.Interop.Excel; 
    using System.Reflection;

    In VB:

    Imports Excel = Microsoft.Office.Interop.Excel


    Just Be Humble Malange!
    quinta-feira, 12 de agosto de 2010 21:29
    Moderador
  • Olá,
    Este código faz isso, vc pode dar uma melhorada nele...


    primeiro vc cria o excel

     

    private static void CreateFile()

    {

     

     

    using (OleDbConnection connection =

     

    new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\\temp\\teste.xls;Extended Properties='Excel 8.0;HDR=Yes'"))

    {

    connection.Open();

     

    OleDbCommand command = new OleDbCommand(@"CREATE TABLE [Sheet1](

    [CodigoCliente] string, [NomeCliente] string)"

     

    );

    command.Connection = connection;

    command.ExecuteNonQuery();

    connection.Close();

    }

    }

    // depois popula ele com os dados do dataset ou datable

    private

     

    static void LoadFile(string date)

    {

     

    using(OleDbConnection xlsConnection =

     

    new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= c:\\temp\\Matches.xls;Extended Properties='Excel 8.0;HDR=Yes'")

     

    if (null != ds)

    {

    xlsConnection.Open();

     

    OleDbCommand xlsCommand = new OleDbCommand();

    xlsCommand.Connection = xlsConnection;

     

    foreach(DataRow dsRow in ds.Tables[0].Rows)

    {

     

    string side = dsRow[9].ToString().Equals("S") ? "V" : "C";

     

    string symbol = dsRow[14].ToString();

     

    string primaryKey = dsRow[13].ToString() + dsRow[14].ToString();

     

    if (dsRow[15].ToString() == "FRA")

    {

    primaryKey+=

    "F";

    symbol +=

    "F";

    }

    primaryKey += side;

     

    xlsCommand.CommandText =

    @"Insert into [Sheet1]

    (CodigoCliente, NomeCliente )

    values

    (

    '"

     

    + primaryKey + "', '" + dsRow[0] + "','" + dsRow[1] + "')";

    xlsCommand.ExecuteNonQuery();

    }

    xlsConnection.Close();

    }

    }

    Testa aí

    Anderson

    quinta-feira, 12 de agosto de 2010 21:31