Array
(
)

Gerar Excel a partir de um DataSet em C# WindowsForm

Marcelo
   - 18 jan 2012

Tenho um Dataset, e preciso transformar ele em um arquivo excel.
O dataset ja esta populado, preciso apenas montar um codigo do botal GERA EXCEL.
Alguem poderia me ajudar?
Sou leigo no assunto e to aprendendo tudo na raça, na tentativa e erro, mas os artigos que eu encontrei nao me ajudaram muito.

João Arthur
   - 19 jan 2012

eu faço assim não é bem um xls propriamente dito é um arquivo tabulado e salvo com a extensão xls mas ele abre normalmente no excel, acredito que voce possa adaptar a sua necessidade.

#Código

string strSQLidPedidosWeb = select osweb from ordens_servico where ordsercod =  + OS;
            SqlCommand cdmIdPedidoWeb = new SqlCommand(strSQLidPedidosWeb, connSQL.Conn);
            SqlDataReader drIdPedido = cdmIdPedidoWeb.ExecuteReader();
            if (drIdPedido.Read())
            {
                StreamWriter sw = new StreamWriter(Server.MapPath(Arquivos/ + edtArquivo.Text),false,Encoding.Default);

                using (sw)
                {

                    StringBuilder linha = new StringBuilder();
                    StringBuilder cabecalho = new StringBuilder();

                    idPedidoWeb = drIdPedido[osweb].ToString();

                    drIdPedido.Close();

                    string strSQLcampos = select a.campo_imp, a.nomcmp_arq from campos_arquivos a  +
                             inner join pedidos_web b on (a.codlay_arq = b.codlay_arq)  +
                             where b.id =  + idPedidoWeb;
                    SqlDataAdapter da = new SqlDataAdapter(strSQLcampos, connSQL.Conn);
                    DataSet dsCampos = new DataSet();
                    da.Fill(dsCampos);

                    SqlDataAdapter daDados = new SqlDataAdapter(strSQLdados, connSQL.Conn);
                    DataSet dsDados = new DataSet();
                    daDados.Fill(dsDados);

                    foreach (DataRow dr in dsDados.Tables[0].Rows)
                    {
                        i++;
                        foreach (DataRow drCampos in dsCampos.Tables[0].Rows)
                        {
                            //grava na stringbuilder os nomes dos campos
                            cabecalho.Append(drCampos[1].ToString()+\t);
                           
                            //grava o campo que ta configurado no layout para não imprimir os campos null do dataset dos dados
                            linha.Append(dr[drCampos[0].ToString()].ToString() + \t);
                        }
                        //escreve o cabeçalho com os nomes dos campos
                        if (i == 1)
                        {
                            sw.WriteLine(cabecalho.ToString());
                        }
                        //escreve os dados
                        sw.WriteLine(linha.ToString());
                        linha.Clear();
                    }

Giordani Ramos
   - 20 jan 2012

Boa noite Marcelo.

Dependendo do que você está utilizando para exibir o seu dataset, talvez não seja necessário implementar muita coisa para salvar em excel.
Na aba REPORTING da Toolbox, há o componente Report Viewer. Depois de carregar um relatório vinculado ao dataset, este componente habilita o botão (formato de disquete) de exportar o relatório. Há 3 formatos nativos, DOC, XLS e PDF.

Talvez isso resolva seu problema.

Abraço.

Marcelo
   - 20 jan 2012

O que eu estou fazendo é salvando ele em xml e ai abrindo ele com o Excel, mas vou tentar com o report e digo se consegui.


Obrigado.