Usuário com melhor resposta
Erro Importação Excel para DataGridView - Só funciona com o arquivo aberto

Pergunta
-
Bom dia, pessoal.
Eu estou fazendo uma importação de dados de uma planilha em excel para um DataGridView. Estava funcionando normalmente, mas começou a dar problema do nada, até que eu percebi que se eu abrisse a planilha e fizesse a importação, funcionaria de boa, aí eu fecho o arquivo e para de funcionar novamente.
Segue meu código e a linha em que o erro acontece.
public void ExcelToDataGridView(string caminho, DataGridView dgv, int planilha) { string strConexao = String.Empty; if (IntPtr.Size == 4) strConexao = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=0\"", caminho); else if (IntPtr.Size == 8) strConexao = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=0\"", caminho); else System.Windows.Forms.MessageBox.Show("Computador não suportado para a aplicação"); OleDbConnection conn = new OleDbConnection(strConexao); //----- O ERRO ACONTECE AQUI ----- //----- An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll Additional information: A conexão para visualização da planilha Microsoft Excel vinculada foi perdida. conn.Open(); DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); DataSet output = new DataSet(); foreach (DataRow row in dt.Rows) { // obtem o noma da planilha corrente string sheet = row["TABLE_NAME"].ToString(); // obtem todos as linhas da planilha corrente OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + sheet + "]", conn); cmd.CommandType = CommandType.Text; // copia os dados da planilha para o datatable DataTable outputTable = new DataTable(sheet); output.Tables.Add(outputTable); new OleDbDataAdapter(cmd).Fill(outputTable); } dgv.DataSource = output.Tables[planilha]; dgv.AutoGenerateColumns = true; }
Obrigado :)
Leonardo D'Amato
Respostas
-
Bom dia Leonardo N. D'Amato,
Esse comportamento é esperado, existe um artigo da Microsoft que diz exatamente isso.
ACC: #Error na planilha vinculada após fechar o arquivo no Excel
- Causa: A planilha foi fechada no Microsoft Excel e Microsoft Access perdeu seu vínculo estabelecido na planilha.
- Resolução: Para restabelecer o vínculo com a planilha do Microsoft Excel, feche e reabra a tabela vinculada no Microsoft Access.
Ou seja, esse comportamento é padrão, há até informações no artigo de como reproduzir o problema.
Atenciosamente, Roberto Alves
- Marcado como Resposta Leonardo N. D'Amato quinta-feira, 22 de outubro de 2015 11:17
Todas as Respostas
-
Boa tarde Leonardo N. D'Amato,
Poderia informar por gentileza o erro que está ocorrendo com detalhes?
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
-
Bom dia Leonardo N. D'Amato,
Esse comportamento é esperado, existe um artigo da Microsoft que diz exatamente isso.
ACC: #Error na planilha vinculada após fechar o arquivo no Excel
- Causa: A planilha foi fechada no Microsoft Excel e Microsoft Access perdeu seu vínculo estabelecido na planilha.
- Resolução: Para restabelecer o vínculo com a planilha do Microsoft Excel, feche e reabra a tabela vinculada no Microsoft Access.
Ou seja, esse comportamento é padrão, há até informações no artigo de como reproduzir o problema.
Atenciosamente, Roberto Alves
- Marcado como Resposta Leonardo N. D'Amato quinta-feira, 22 de outubro de 2015 11:17
-