Usuário com melhor resposta
Como Exportar minha tabela para Excel via C# (WF)

Pergunta
-
Olá a todos. Estou precisando fazer um método para exportar todos os dados de uma tabela via c# utilizo Windows Forms, tenho um código do site Macoratti mais eu preciso que o select seja dinâmico.. Vejam o que já tenho de código:
// Export Data To EXCEL File : public void To_EXCEL(string tabela) { try { string filename = null; SaveFileDialog SaveXml = new SaveFileDialog(); SaveXml.Filter = "EXCEL files|*.xls"; SaveXml.FileName = tabela + ".xls"; if (SaveXml.ShowDialog() == DialogResult.OK) { filename = SaveXml.FileName; } //Criar um arquivo para escrever using (StreamWriter sw = new StreamWriter(filename)) { //Monta a string de conexão para SQL Server com os dados do formulário string conn = @"Server= " + "SERVER-PC"; conn = conn + "; Database= " + "ImportExcelData"; conn = conn + "; Trusted_Connection=True"; SqlConnection cn = new SqlConnection(conn); //Define a instrução SQL para executar contra o banco de dados string sql = " SELECT * FROM " + tabela; SqlCommand cmd = new SqlCommand(sql, cn); try { //Abre a conexão e gera o datareader cn.Open(); SqlDataReader dr = cmd.ExecuteReader(); //Percorre o datareader e escreve os dados no arquivo .xls definido while (dr.Read()) { sw.WriteLine(dr["Regiao"].ToString() + "\t" + dr["Ano"].ToString() + "\t" + dr["Qtd"].ToString()); //aqui preciso que seja dinâmico e não com as colunas definidas. } //Exibe mensagem ao usuario MessageBox.Show("Arquivo " + filename + " gerado com sucesso."); } catch (Exception excpt) { MessageBox.Show(excpt.Message); } } } catch (Exception ex) { MessageBox.Show("Erro! " + ex.Message, "Não foi possível exportar."); } }
PS: E também não achei como adicionar um 'Encoding' ao Excel pois os dados com acento saem zoados.
- Editado Jonas Marco quarta-feira, 28 de outubro de 2015 13:07
Respostas
-
Jonas, não utilizaria esta solução (que envolve configurações e até a instalação do Office num servidor).
Sugiro vc utilizar bibliotecas como NPOI ou Open XML SDK que são mais flexíveis e atendem ao que vc precisa.
Seguem 2 artigos em que apresento exemplos de uso das mesmas:
- Sugerido como Resposta Renato GroffeMVP quarta-feira, 28 de outubro de 2015 13:58
- Marcado como Resposta Marcos SJ quarta-feira, 28 de outubro de 2015 18:34
-
A questão é o trabalho e os problemas que vc pode ter ao implantar isso num servidor que vc contratar. Se for uma hospedagem da UOL ou mesmo no Azure da Microsoft, é quase certeza de que vc não conseguirá utilizar este código do Macoratti (já que não terá permissões para tal).
As bibliotecas que te passei já foram testadas e muita gente vem utilizando as mesmas.
- Marcado como Resposta Marcos SJ quarta-feira, 28 de outubro de 2015 19:55
Todas as Respostas
-
Jonas, não utilizaria esta solução (que envolve configurações e até a instalação do Office num servidor).
Sugiro vc utilizar bibliotecas como NPOI ou Open XML SDK que são mais flexíveis e atendem ao que vc precisa.
Seguem 2 artigos em que apresento exemplos de uso das mesmas:
- Sugerido como Resposta Renato GroffeMVP quarta-feira, 28 de outubro de 2015 13:58
- Marcado como Resposta Marcos SJ quarta-feira, 28 de outubro de 2015 18:34
-
-
A questão é o trabalho e os problemas que vc pode ter ao implantar isso num servidor que vc contratar. Se for uma hospedagem da UOL ou mesmo no Azure da Microsoft, é quase certeza de que vc não conseguirá utilizar este código do Macoratti (já que não terá permissões para tal).
As bibliotecas que te passei já foram testadas e muita gente vem utilizando as mesmas.
- Marcado como Resposta Marcos SJ quarta-feira, 28 de outubro de 2015 19:55
-
-