Importar arquivo excel .net
23/07/2014
0
Me deparei com o seguinte problema "a empresa onde trabalho possui um sistema externo que está com problemas para exportar uma grande quantidade de colunas de um relatório num total de 20 colunas, assim, é preciso efetuar a exportação duas vezes, um exemplo seria exportar 12 colunas em um arquivo e 8 colunas em outro arquivo". Devido a esta situação foi designado para a equipe desenvolver uma aplicação C# e Asp .NET que importasse os dois arquivos e automaticamente estes fossem juntados, ou seja, eu faria um FileUpload destes dois arquivos e mandava importar, nesse mesmo botão "importar" terá que ser feito com que o arquivo de 8 colunas se junte ao de 12 colunas de modo sequencial e gere um único arquivo com as 20 colunas. Alguém poderia me ajudar de como fazer essa junção de colunas?
OBS: Entramos em contato com a empresa que desenvolveu o sistema, mas este está morto. Ninguém mais o desenvolve.
Desde já agradeço.
Renato Pereira
Posts
23/07/2014
Fabiano Carvalho
23/07/2014
Renato Pereira
23/07/2014
Joel Rodrigues
valorColuna1 = arquivo1[0]; valorColuna2 = arquivo1[1]; ... valorColuna13 = arquivo2[0]; valorColuna14 = arquivo2[1]; ...
25/07/2014
Renato Pereira
25/07/2014
Renato Pereira
28/07/2014
Joel Rodrigues
28/07/2014
Joel Rodrigues
28/07/2014
Renato Pereira
Exemplo: No primeiro arquivo excel eu possuo algumas informações sobre as ordens de serviço (OS). No segundo, tem colunas que são referentes a cada serviço que é composta por "manutenção, instalação, reparação, entre outras" das OS. Com isso, no segundo arquivo eu possuo uma média 3 registros por OS de um determinado contrato, ou seja, no segundo arquivo posso ter registros repetidos nas colunas "contrato" e "OS" e diferentes na coluna "serviço".
No contrato "xxx" da os "yyy" possuo serviço "zzz".
No contrato "xxx" da os "yyy" possuo serviço "www".
Entendeu o processo Joel?
Creio que a solução mais prática para da junção dos arquivos seja salvar os dados no banco separadamente em suas respectivas tabelas, depois fazer uma consulta e salvar todos os dados em uma tabela a parte.
Hoje preciso de uma solução para fazer a importação do arquivo excel, vi alguns exemplos utilizando o OLEDB e não obtive sucesso, saberia me ajudar quanto a isso?
31/07/2014
Joel Rodrigues
Os arquivos contém dados distintos, e pelo que vi há uma relação de mestre-detalhes entre eles.
Não vejo problema nenhum em ler um arquivo de cada vez, a começar pelo "mestre" ou "tabela pai", que é o das OS. Em seguida lê o outro com os serviços (detalhes ou tabela filha).
E com relação ao banco, com certeza a melhor estrutura a ser usada é a de duas tabelas), que se relacionam pelo campo chave da OS.
31/07/2014
Joel Rodrigues
05/08/2014
Renato Pereira
06/08/2014
Joel Rodrigues
Parece besteira, mas já vi em algum fórum algo sobre isso.
08/08/2014
Renato Pereira
08/08/2014
Renato Pereira
string conexao = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source='D:\Ramon\planilha.xlsx';Extended Properties='Excel 12.0; HDR=Yes\"; OleDbConnection origem = default(OleDbConnection); origem = new OleDbConnection(conexao); OleDbCommand selecao = default(OleDbCommand); selecao = new OleDbCommand("SELECT * FROM [Plan$]", origem); OleDbDataAdapter adaptador = new OleDbDataAdapter(); adaptador.SelectCommand = selecao; DataSet ds = new DataSet(); adaptador.Fill(ds); gdvDados.DataSource = ds.Tables[0]; origem.Close(); SqlConnection destino = new SqlConnection(); destino.ConnectionString = @"Server=.\SQLEXPRESS; Database=Importacao; Trusted_Connection = True"; destino.Open(); SqlBulkCopy importar = default(SqlBulkCopy); importar = new SqlBulkCopy(destino); importar.DestinationTableName = "Teste"; importar.WriteToServer(ds.Tables[0]); destino.Close();
Com isso, gostaria de saber se você saberia me informar como ler um segundo arquivo?
Criei uma tabela para cada arquivo e insiro o mesmo comando no segundo botão com os dados da tabela referente ao arquivo.
*Não me recordo o nome do erro, depois posto aqui. Mas, sei que acontece na linha "importar.WriteToServer(ds.Tables[0]);"
Clique aqui para fazer login e interagir na Comunidade :)