Jump to content
leoretorico

[Resolvido] Importar dados do excel para tabela sql server

Recommended Posts

leoretorico

Boa tarde amigos!

Estou desenvolvendo um aplicativo que vai importar dados do excel para o sql server.

Basicamente toda semana o usuário vai fazer o download de um .xls diretamente de um site e clicar em um botão no sistema para importar os dados da planilha para o sql server

Algum de vocês tem um tutorial para me ajudar?

Eu sei importar dados diretamente pelo sqlserver,mas preciso que o app. faça isso para o usuário automaticamente.

Share this post


Link to post
Share on other sites
leoretorico

Obrigado, nelsonr.

Com certeza vai me ajudar.

Eu encontrei um modo de fazer o que preciso ,mas ainda tenho um problema

Dim excelApplication As New Excel.Application
	Dim excelWrkBook As Excel.Workbook
	excelApplication.Visible = False
	excelWrkBook = excelApplication.Workbooks.Open("C:\Formação - 1º Semestre de 2013.xls")
	excelWrkBook.SaveAs(Filename:="c:\Formação - 1º Semestre de 2013.csv", FileFormat:=Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV)

Neste código eu converto xls para csv .(Para futuramente importar no sql server)

Mas o código acima ,apenas converteu a primeira planilha do arquivo

Neste arquivo eu tenho 4 abas : DADOS1 / DADOS 2 /ESTATISTICA / CONTATO

Share this post


Link to post
Share on other sites
nelsonr

Se queres fazer desssa maneira, tens de usar excelWrkBook.Sheets(1).SaveAs, para cada secção.

O mais certo é teres de fazer o cast, algo assim:

DirectCast(excelWrkBook.Sheets(1), Excel.Worksheet).SaveAs(Filename:="c:\Formação - 1º Semestre de 2013.csv", FileFormat:=Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV)

Não tenho o VB.NET instalado, mas testei com C# e funciona para o que pretendes.

Share this post


Link to post
Share on other sites
leoretorico

Obrigado Nelson!

Só mais uma dúvida,pois não posso testar o código agora!

Para converter as outras abas (Sheets) eu poderia fazer algo assim : DirectCast(excelWrkBook.Sheets(1,2,3,4) ???

ou precisaria repetir o código que você me mostrou? :)

Share this post


Link to post
Share on other sites
nelsonr

Tens de repetir.

Podes é usar um ciclo e passar por todas, começando na 1 até excelWrkBook.Sheets.count.

E tens de ter em atenção de dar um nome único para cada ficheiro a gravar

Share this post


Link to post
Share on other sites
leoretorico

Eu fiz assim:

Dim excelSheetToOpen As New OpenFileDialog()
	Dim definicao As String = "Data1"
	Dim definicao2 As String = "Data2"
	excelSheetToOpen.Filter = "Excel 97- 2003 WorkBook (*.xls)| *.xls | Excel 2007 WorkBook (*.xlsx) | *.xlsx | All files (*.*)|*.*"
	excelSheetToOpen.FilterIndex = 3
	excelSheetToOpen.Multiselect = True
	If excelSheetToOpen.ShowDialog() = DialogResult.OK Then


		Dim excelApplication As New Excel.Application
		Dim excelWrkBook As Excel.Workbook
		excelApplication.Visible = False
		excelWrkBook = excelApplication.Workbooks.Open(excelSheetToOpen.FileName)
		DirectCast(excelWrkBook.Sheets(1), Excel.Worksheet).SaveAs(Filename:="C:\" & definicao & ".CSV", FileFormat:=Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV)
		DirectCast(excelWrkBook.Sheets(2), Excel.Worksheet).SaveAs(Filename:="C:\" & definicao2 & ".CSV", FileFormat:=Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV)
		'excelWrkBook.SaveAs(Filename:="C:\" & definicao & ".CSV", FileFormat:=Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV)
		excelWrkBook.Close()

Share this post


Link to post
Share on other sites

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.