EXPORTANDO INFORMACOES PARA EXCEL
Bom dia senhores,
Estou tendo uma enorme dor de cabeça com algo que deveria ser tão simples.
Preciso simplesmente exportar algumas informações de um DataGridView para uma planilha de Excel.
Atualmente faço dessa forma:
Bom, exporta certinho utilizando esse método no Excel 2003 em Português, agora utilizar o mesmo método no Excel 2003 em Inglês me gera um erro.
ERRO:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Runtime.InteropServices.COMException (0x80028018): Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
at Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)
at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
Alguém já passou por isso ou faz ideia do porque isso pode estar ocorrendo?
Ou também se houver alguma outra forma para exportar esses dados para o Excel... Estou aberto para sugestões e mudanças.
Estou tendo uma enorme dor de cabeça com algo que deveria ser tão simples.
Preciso simplesmente exportar algumas informações de um DataGridView para uma planilha de Excel.
Atualmente faço dessa forma:
Private Sub Exportar()
Dim oExcel As Object = CreateObject([Ô]excel.application[Ô])
Dim oWorkbook As Object = oExcel.Workbooks.Open([Ô]D:\PlanilhaBase.xls[Ô])
Dim oSheet As Object = Nothing
Dim oWS As Object = Nothing
[ô]Salva a PlanilhaBase em outro local
If Val(oExcel.Version) > 11 Then
oWorkbook.SaveAs([Ô]D:\Teste.xls[Ô], 56)
Else
oWorkbook.SaveAs([Ô]D:\Teste.xls[Ô])
End If
[ô]Exibe o aplicativo Excel
oExcel.Application.Visible = True
[ô]Exporto os dados
oSheet = oWorkbook.Sheets(1)
oSheet = oWorkbook.Sheets([Ô]Projetos[Ô]).Select()
oWS = oExcel.ActiveWorkbook.ActiveSheet
For Each Linha As DataGridViewRow In Me.dgvProjetos.Rows
Dim ContadorColuna As Integer = 1
For Each Celula As DataGridViewCell In Me.dgvProjetos.Rows(Linha.Index).Cells
With oSheet
oWS.Cells(Linha.Index + 2, ContadorColuna).Value = CStr(Celula.Value)
End With
ContadorColuna += 1
Next
Next
[ô]Ajusta a largura das colunas
oWS.Columns([Ô]A:AZ[Ô]).AutoFit()
End Sub
Bom, exporta certinho utilizando esse método no Excel 2003 em Português, agora utilizar o mesmo método no Excel 2003 em Inglês me gera um erro.
ERRO:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Runtime.InteropServices.COMException (0x80028018): Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
at Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)
at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
Alguém já passou por isso ou faz ideia do porque isso pode estar ocorrendo?
Ou também se houver alguma outra forma para exportar esses dados para o Excel... Estou aberto para sugestões e mudanças.
Jon...
eu uso assim para exportar para excel
Private Sub ExportarParaExcel2007()
Dim xlApp As Excel.Application = New Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets([Ô]Plan1[Ô])
With xlWorkSheet
.Cells(1, 1) = [Ô]EMPRESA[Ô]
.Cells(1, 2) = [Ô]COLABORADOR[Ô]
.Cells(1, 3) = [Ô]DATA[Ô]
.Cells(1, 4) = [Ô]AVALIAÇÃO[Ô]
.Cells(1, 5) = [Ô]PESO[Ô]
.Cells(1, 6) = [Ô]ALTURA[Ô]
.Cells(1, 7) = [Ô]IMC[Ô]
.Cells(1, 8) = [Ô]RESULTADO DO IMC[Ô]
.Cells(1, 9) = [Ô]CINTURA[Ô]
.Cells(1, 10) = [Ô]QUADRIL[Ô]
.Cells(1, 11) = [Ô]ICQ[Ô]
.Cells(1, 12) = [Ô]RESULTADO DO ICQ[Ô]
.Cells(1, 13) = [Ô]C.A[Ô]
.Cells(1, 14) = [Ô]RESULTADO DO C.A[Ô]
.Cells(1, 15) = [Ô]PESO DESEJADO[Ô]
.Cells(1, 16) = [Ô]% GORDURA[Ô]
.Cells(1, 17) = [Ô]RESULTADO DA % GORDURA[Ô]
.Cells(1, 18) = [Ô]BICEPS[Ô]
.Cells(1, 19) = [Ô]TRICEPS[Ô]
.Cells(1, 20) = [Ô]SUPRA ILIACA[Ô]
.Cells(1, 21) = [Ô]SUBSCAPULAR[Ô]
.Cells(1, 22) = [Ô]% GORDURA DOBRAS[Ô]
.Cells(1, 23) = [Ô]OBSERVAÇÕES[Ô]
.Cells(1, 24) = [Ô]BRAÇO[Ô]
.Cells(1, 25) = [Ô]PULSO[Ô]
.Cells(1, 26) = [Ô]PONTUAÇÃO - DADOS CLINICOS[Ô]
.Cells(1, 27) = [Ô]PONTUAÇÃO - DADOS COMPORTAMENTAIS[Ô]
.Cells(1, 28) = [Ô]PONTUAÇÃO - DADOS DE CONSUMO[Ô]
.Cells(1, 29) = [Ô]PONTUAÇÃO - DADOS ANTROPOMéTRICOS[Ô]
.Cells(1, 30) = [Ô]PONTUAÇÃO TOTAL POR AVALIAÇÃO[Ô]
.Range([Ô]A1[Ô], [Ô]A1[Ô]).Font.Bold = True
.Range([Ô]B1[Ô], [Ô]B1[Ô]).Font.Bold = True
.Range([Ô]C1[Ô], [Ô]C1[Ô]).Font.Bold = True
.Range([Ô]D1[Ô], [Ô]D1[Ô]).Font.Bold = True
.Range([Ô]E1[Ô], [Ô]E1[Ô]).Font.Bold = True
.Range([Ô]F1[Ô], [Ô]F1[Ô]).Font.Bold = True
.Range([Ô]G1[Ô], [Ô]G1[Ô]).Font.Bold = True
.Range([Ô]H1[Ô], [Ô]H1[Ô]).Font.Bold = True
.Range([Ô]I1[Ô], [Ô]I1[Ô]).Font.Bold = True
.Range([Ô]J1[Ô], [Ô]J1[Ô]).Font.Bold = True
.Range([Ô]K1[Ô], [Ô]K1[Ô]).Font.Bold = True
.Range([Ô]L1[Ô], [Ô]L1[Ô]).Font.Bold = True
.Range([Ô]M1[Ô], [Ô]M1[Ô]).Font.Bold = True
.Range([Ô]N1[Ô], [Ô]N1[Ô]).Font.Bold = True
.Range([Ô]O1[Ô], [Ô]O1[Ô]).Font.Bold = True
.Range([Ô]P1[Ô], [Ô]P1[Ô]).Font.Bold = True
.Range([Ô]Q1[Ô], [Ô]Q1[Ô]).Font.Bold = True
.Range([Ô]R1[Ô], [Ô]R1[Ô]).Font.Bold = True
.Range([Ô]S1[Ô], [Ô]S1[Ô]).Font.Bold = True
.Range([Ô]T1[Ô], [Ô]T1[Ô]).Font.Bold = True
.Range([Ô]U1[Ô], [Ô]U1[Ô]).Font.Bold = True
.Range([Ô]V1[Ô], [Ô]V1[Ô]).Font.Bold = True
.Range([Ô]W1[Ô], [Ô]W1[Ô]).Font.Bold = True
.Range([Ô]X1[Ô], [Ô]X1[Ô]).Font.Bold = True
.Range([Ô]Y1[Ô], [Ô]Y1[Ô]).Font.Bold = True
.Range([Ô]Z1[Ô], [Ô]Z1[Ô]).Font.Bold = True
.Range([Ô]AA1[Ô], [Ô]AA1[Ô]).Font.Bold = True
.Range([Ô]AB1[Ô], [Ô]AB1[Ô]).Font.Bold = True
.Range([Ô]AC1[Ô], [Ô]AC1[Ô]).Font.Bold = True
.Range([Ô]AD1[Ô], [Ô]AD1[Ô]).Font.Bold = True
End With
For linha As Integer = 0 To DataGridView1.Rows.Count - 1
For coluna As Integer = 0 To DataGridView1.Columns.Count - 1
xlWorkSheet.Cells(linha + 2, coluna + 1) = DataGridView1.Rows(linha).Cells(coluna).Value
Next
Next
xlWorkSheet.SaveAs(Application.StartupPath & [Ô]\Colaboradores.xls[Ô])
xlWorkBook.Close()
xlApp.Quit()
MessageBox.Show([Ô]Arquivo [Ô][Ô]Colaboradores.xls[Ô][Ô] criado com sucesso![Ô], [Ô]DietNet[Ô])
eu uso assim para exportar para excel
Private Sub ExportarParaExcel2007()
Dim xlApp As Excel.Application = New Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets([Ô]Plan1[Ô])
With xlWorkSheet
.Cells(1, 1) = [Ô]EMPRESA[Ô]
.Cells(1, 2) = [Ô]COLABORADOR[Ô]
.Cells(1, 3) = [Ô]DATA[Ô]
.Cells(1, 4) = [Ô]AVALIAÇÃO[Ô]
.Cells(1, 5) = [Ô]PESO[Ô]
.Cells(1, 6) = [Ô]ALTURA[Ô]
.Cells(1, 7) = [Ô]IMC[Ô]
.Cells(1, 8) = [Ô]RESULTADO DO IMC[Ô]
.Cells(1, 9) = [Ô]CINTURA[Ô]
.Cells(1, 10) = [Ô]QUADRIL[Ô]
.Cells(1, 11) = [Ô]ICQ[Ô]
.Cells(1, 12) = [Ô]RESULTADO DO ICQ[Ô]
.Cells(1, 13) = [Ô]C.A[Ô]
.Cells(1, 14) = [Ô]RESULTADO DO C.A[Ô]
.Cells(1, 15) = [Ô]PESO DESEJADO[Ô]
.Cells(1, 16) = [Ô]% GORDURA[Ô]
.Cells(1, 17) = [Ô]RESULTADO DA % GORDURA[Ô]
.Cells(1, 18) = [Ô]BICEPS[Ô]
.Cells(1, 19) = [Ô]TRICEPS[Ô]
.Cells(1, 20) = [Ô]SUPRA ILIACA[Ô]
.Cells(1, 21) = [Ô]SUBSCAPULAR[Ô]
.Cells(1, 22) = [Ô]% GORDURA DOBRAS[Ô]
.Cells(1, 23) = [Ô]OBSERVAÇÕES[Ô]
.Cells(1, 24) = [Ô]BRAÇO[Ô]
.Cells(1, 25) = [Ô]PULSO[Ô]
.Cells(1, 26) = [Ô]PONTUAÇÃO - DADOS CLINICOS[Ô]
.Cells(1, 27) = [Ô]PONTUAÇÃO - DADOS COMPORTAMENTAIS[Ô]
.Cells(1, 28) = [Ô]PONTUAÇÃO - DADOS DE CONSUMO[Ô]
.Cells(1, 29) = [Ô]PONTUAÇÃO - DADOS ANTROPOMéTRICOS[Ô]
.Cells(1, 30) = [Ô]PONTUAÇÃO TOTAL POR AVALIAÇÃO[Ô]
.Range([Ô]A1[Ô], [Ô]A1[Ô]).Font.Bold = True
.Range([Ô]B1[Ô], [Ô]B1[Ô]).Font.Bold = True
.Range([Ô]C1[Ô], [Ô]C1[Ô]).Font.Bold = True
.Range([Ô]D1[Ô], [Ô]D1[Ô]).Font.Bold = True
.Range([Ô]E1[Ô], [Ô]E1[Ô]).Font.Bold = True
.Range([Ô]F1[Ô], [Ô]F1[Ô]).Font.Bold = True
.Range([Ô]G1[Ô], [Ô]G1[Ô]).Font.Bold = True
.Range([Ô]H1[Ô], [Ô]H1[Ô]).Font.Bold = True
.Range([Ô]I1[Ô], [Ô]I1[Ô]).Font.Bold = True
.Range([Ô]J1[Ô], [Ô]J1[Ô]).Font.Bold = True
.Range([Ô]K1[Ô], [Ô]K1[Ô]).Font.Bold = True
.Range([Ô]L1[Ô], [Ô]L1[Ô]).Font.Bold = True
.Range([Ô]M1[Ô], [Ô]M1[Ô]).Font.Bold = True
.Range([Ô]N1[Ô], [Ô]N1[Ô]).Font.Bold = True
.Range([Ô]O1[Ô], [Ô]O1[Ô]).Font.Bold = True
.Range([Ô]P1[Ô], [Ô]P1[Ô]).Font.Bold = True
.Range([Ô]Q1[Ô], [Ô]Q1[Ô]).Font.Bold = True
.Range([Ô]R1[Ô], [Ô]R1[Ô]).Font.Bold = True
.Range([Ô]S1[Ô], [Ô]S1[Ô]).Font.Bold = True
.Range([Ô]T1[Ô], [Ô]T1[Ô]).Font.Bold = True
.Range([Ô]U1[Ô], [Ô]U1[Ô]).Font.Bold = True
.Range([Ô]V1[Ô], [Ô]V1[Ô]).Font.Bold = True
.Range([Ô]W1[Ô], [Ô]W1[Ô]).Font.Bold = True
.Range([Ô]X1[Ô], [Ô]X1[Ô]).Font.Bold = True
.Range([Ô]Y1[Ô], [Ô]Y1[Ô]).Font.Bold = True
.Range([Ô]Z1[Ô], [Ô]Z1[Ô]).Font.Bold = True
.Range([Ô]AA1[Ô], [Ô]AA1[Ô]).Font.Bold = True
.Range([Ô]AB1[Ô], [Ô]AB1[Ô]).Font.Bold = True
.Range([Ô]AC1[Ô], [Ô]AC1[Ô]).Font.Bold = True
.Range([Ô]AD1[Ô], [Ô]AD1[Ô]).Font.Bold = True
End With
For linha As Integer = 0 To DataGridView1.Rows.Count - 1
For coluna As Integer = 0 To DataGridView1.Columns.Count - 1
xlWorkSheet.Cells(linha + 2, coluna + 1) = DataGridView1.Rows(linha).Cells(coluna).Value
Next
Next
xlWorkSheet.SaveAs(Application.StartupPath & [Ô]\Colaboradores.xls[Ô])
xlWorkBook.Close()
xlApp.Quit()
MessageBox.Show([Ô]Arquivo [Ô][Ô]Colaboradores.xls[Ô][Ô] criado com sucesso![Ô], [Ô]DietNet[Ô])
Dessa forma funciona para todas as versões? Ou apenas para o 2007 mesmo?
RESOLVIDO!
O problema estava ocorrendo porque existe incompatibilidade entre algumas versões de Excel vs Sistema Operacional.
Resolvi o problema alterando o tipo / localização para inglês.
Assim independente da versão do Excel que for utilizado para exportar, usará o tipo Default definido por mim.
Agradeço a todos pela ajuda, em especÃfico ao Mario Sampaio ([txt-color=#0000f0]MHDSERAFS[/txt-color]), que me deu uma grande força pelo MSN.
O problema estava ocorrendo porque existe incompatibilidade entre algumas versões de Excel vs Sistema Operacional.
Resolvi o problema alterando o tipo / localização para inglês.
Assim independente da versão do Excel que for utilizado para exportar, usará o tipo Default definido por mim.
CurrentThread.CurrentCulture = New CultureInfo([Ô]en-US[Ô])
Agradeço a todos pela ajuda, em especÃfico ao Mario Sampaio ([txt-color=#0000f0]MHDSERAFS[/txt-color]), que me deu uma grande força pelo MSN.
Tópico encerrado , respostas não são mais permitidas