Jump to content

[VB.NET] Pequeno problema Imports Microsoft.Office.Interop.Excel no VS2013


Recommended Posts

Posted

Boa noite, estou com um pequeno problema, nao Visual Studio 2013 nao me é reconhecido o

#Imports Microsoft.Office.Interop.Excel

será por ser o 2013 ou por ter a verçao do Office 2013??

Pedro'O

Posted

Obrigado resolveu, mas agora tenho este problema nas seguintes variaveis

Dim objExcelApp As New Excel.Application
Dim objExcelBook As Excel.Workbook
Dim objExcelSheet As Excel.Worksheet

Nao reconhece o Excel.Application nem o Workbook nem o Worksheet

Pedro'O

Posted

Eu tenho isto

Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Excel
Imports System.Threading.Thread
Imports System.Globalization
Public Class Form1
Enum xlsOption
 xlsSaveAs
 xlsOpen
End Enum

''' <summary>
''' Exporta a informação de uma DataGridView para o Microsoft Excel
''' </summary>
''' <param name="dgvName">Nome da DataGridView </param>
''' <param name="option">SaveAs ou Open</param>
''' <param name="fileName">Nome completo do ficheiro</param>
Public Sub ExportToExcel(ByVal dgvName As DataGridView, ByVal [option] As xlsOption, Optional ByVal fileName As String = "")

 Dim objExcelApp As New Excel.Application
 Dim objExcelBook As Excel.Workbook
 Dim objExcelSheet As Excel.Worksheet


E mesmo assim continua igual

Pedro'O

Posted
Dim objExcelApp As New Excel.Application
Dim objExcelBook As Excel.Workbook
Dim objExcelSheet As Excel.Worksheet

Bem eu tirando o Excel. de todas as variaveis resolveu o probelma, mas nao haverá conflitos ou assim??

Ja agora outra duvida quando vou gravar o ficheiro ele dá-me o seguinte erro...

O Codigo que estou a testar foi publicado nesta pagina e não é meu, mas estou a tentar fazer projecto onde vou necessitar desta ferramenta, la publiquei uma pergunta mas nao recebi resposta ainda... espero nao estar a infringir nada...

http://www.jorgepaulino.com/2008/05/vbnet-exportar-datagridview-para-excel.html

O codigo que eu tenho é o seguinte:

Imports Microsoft.Office.Interop.Excel
Imports System.Threading.Thread
Imports System.Globalization
Public Class Form1
Enum xlsOption
 xlsSaveAs
 xlsOpen
End Enum
''' <summary>
''' Exporta a informação de uma DataGridView para o Microsoft Excel
''' </summary>
''' <param name="dgvName">Nome da DataGridView </param>
''' <param name="option">SaveAs ou Open</param>
''' <param name="fileName">Nome completo do ficheiro</param>
Public Sub ExportToExcel(ByVal dgvName As DataGridView, ByVal [option] As xlsOption, Optional ByVal fileName As String = "")
 Dim objExcelApp As New Application
 Dim objExcelBook As Workbook
 Dim objExcelSheet As Worksheet
 Try
	 '' Se foi seleccionada a opção xlsSaveAs e não foi indicado ficheiro
	 If [option] = xlsOption.xlsSaveAs And fileName = String.Empty Then
		 MessageBox.Show("É necessário indicar um nome para o ficheiro")
		 Exit Sub
	 End If
	 ' Altera o tipo/localização para Inglês. Existe incompatibilidade
	 ' entre algumas versões de Excel vs Sistema Operativo
	 Dim oldCI As CultureInfo = CurrentThread.CurrentCulture
	 CurrentThread.CurrentCulture = New CultureInfo("en-US")
	 ' Adiciona um workbook e activa a worksheet actual
	 objExcelBook = objExcelApp.Workbooks.Add
	 objExcelSheet = CType(objExcelBook.Worksheets(1), Worksheet)
	 ' Ciclo nos cabeçalhos para escrever os títulos a bold/negrito
	 Dim dgvColumnIndex As Int16 = 1
	 For Each col As DataGridViewColumn In dgvName.Columns
		 objExcelSheet.Cells(1, dgvColumnIndex) = col.HeaderText
		 objExcelSheet.Cells(1, dgvColumnIndex).Font.Bold = True
		 dgvColumnIndex += 1
	 Next
	 ' Ciclo nas linhas/células
	 Dim dgvRowIndex As Integer = 2
	 For Each row As DataGridViewRow In dgvName.Rows
		 Dim dgvCellIndex As Integer = 1
		 For Each cell As DataGridViewCell In row.Cells
			 objExcelSheet.Cells(dgvRowIndex, dgvCellIndex) = cell.Value
			 dgvCellIndex += 1
		 Next
		 dgvRowIndex += 1
	 Next
	 ' Ajusta o largura das colunas automaticamente
	 objExcelSheet.Columns.AutoFit()
	 ' Caso a opção seja gravar (xlsSaveAs) grava o ficheiro e fecha
	 ' o Workbook/Excel. Caso contrário (xlsOpen) abre o Excel
	 If [option] = xlsOption.xlsSaveAs Then
		 objExcelBook.SaveAs(fileName)
		 objExcelBook.Close()
		 objExcelApp.Quit()
		 MessageBox.Show("Ficheiro exportado com sucesso para: " & fileName)
	 Else
		 objExcelApp.Visible = True
	 End If
	 ' Altera a tipo/localização para actual
	 CurrentThread.CurrentCulture = oldCI
 Catch ex As Exception
	 MessageBox.Show("Erro não identificado. Mensagem original:" & vbNewLine + ex.Message)
 Finally
	 objExcelSheet = Nothing
	 objExcelBook = Nothing
	 objExcelApp = Nothing
	 ' O GC(garbage collector) recolhe a memória não usada pelo sistema.
	 ' O método Collect() força a recolha e a opção WaitForPendingFinalizers
	 ' espera até estar completo. Desta forma o EXCEL.EXE não fica no
	 ' Task Manager(gestor tarefas) ocupando memória desnecessariamente
	 ' (devem ser chamados duas vezes para maior garantia)
	 GC.Collect()
	 GC.WaitForPendingFinalizers()
	 GC.Collect()
	 GC.WaitForPendingFinalizers()
 End Try
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 liga()
 ligacao.Open()
 sqltext = "SELECT * From Fundos"
 adaptador = New OleDb.OleDbDataAdapter(sqltext, ligacao)
 adaptador.Fill(dados, "Data")
 DataGridView1.DataSource = dados.Tables("Data")
 ligacao.Close()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 ' Exporta e abre o Microsoft Excel
 ExportToExcel(Me.DataGridView1, xlsOption.xlsOpen)

End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
 ' Exporta e grava o ficheiro na localização indicada
 ExportToExcel(Me.DataGridView1, xlsOption.xlsSaveAs, "C:\Users\Pedro\Excel\meuFicheiroExcel.xls")
End Sub
End Class

E tenho os imports da base de dados e algumas variaveis como globais

Pedro'O

Posted

Microsoft Excel nao concegue aceder ao Ficheiro

"C:\Users\Pedro\Excel\1F50C0000"

Nome do ficheiro ou caminho nao Existe

Ficheiro esta a ser utilizado por outro programa

Livro que esta a tentar guardar tem o mesmo nome que um livro que esta aberto neste momento

É isto que me diz...

Pedro'O

Posted

Sim o caminho existe, eu até criei a pasta e copiei o caminho para lá.

Filename como assim? ele nem me chega a a perguntar o Filename nem nada, ele faz o Try mas passa logo para a mensagem de erro

Pedro'O

Posted

Ja percebi onde era o problema, estava a esquecer-me de passar o valor do file name para o button e guardar o nome do documento. Muito obrigado pela ajuda até agora!

já agora uma questao, é possivel formatar as celulas e colocar as bordas numa determinada celula apartir daqui do VB?

Se sim em que parte do codigo seria... é que eu ja concegui unir celulas e aumentar o tamanho da letra, mas alinhar o texto e colocar bordas é que nao...

Contudo obrigado

Pedro'O

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.