none
Como Exportar minha tabela para Excel via C# (WF) RRS feed

  • 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
    quarta-feira, 28 de outubro de 2015 13:05

Respostas

Todas as Respostas