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
|
MVP
Pontos: 700
    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.