Jump to content
estanislau

problemas ao abrir Planilha Excel

Recommended Posts

estanislau

boas,

Estou com um problema no código

Set ObjWorkBook = ObjExcel.Workbooks.Open()

Tenho um objeto FileUpload1 que recebe o caminho onde está o arquivo, selecionado pelo usuário 

Dim fileExt As String
fileExt = System.IO.Path.GetExtension(FileUpload1.FileName)
este objeto ler uma Planilha Excell 
no servidor (máquina local) funcionou. Ele abre o arquivo corresponde do caminho selecionado.

Fazendo um teste de outra máquina ( outro usuário) aparece o seguinte erro:

C:\WINDOWS\system32\meuarquivo.xls' não pôde ser localizado. Verifique a ortografia do nome do arquivo e se a sua localização está correta. Se você estiver tentando abrir o arquivo a partir de sua lista de arquivos usados recentemente no menu 'Arquivo', certifique-se de que o arquivo não foi renomeado, movido nem excluído.

veja que a mensagem de erro mostra um caminho totalmente diferente do selecionado pelo usuário

alguém pode ajudar?  Por Favor!!

Rechousa Edit: Formação de código

Share this post


Link to post
Share on other sites
José Lopes

Não te falta qq coisa aqui?

Set ObjWorkBook = ObjExcel.Workbooks.Open("nome_do_ficheiro") ??


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Share this post


Link to post
Share on other sites
estanislau

Caro José Lopes

Realmente faltam várias informações que omiti e atentei me na mensagem de erro, porém vou tentar explicar melhor, veja que o meu código dever faz as seguintes funções:

Cria um DataTable chamado Table1 e adiciona algumas colunas como abaixo:

Dim Table1 As DataTable
'creating a table 
Dim Row1 As DataRow

'declaring three rows for the table
Dim patrimonio As DataColumn = New DataColumn("patrimonio")

'declaring a column named Name
patrimonio.DataType = System.Type.GetType("System.String")
'setting the datatype for the column
patrimonio.ReadOnly = False

Table1.Columns.Add(patrimonio)

'adding the column to table
Dim NOPLACA As DataColumn = New DataColumn("NOPLACA")
NOPLACA.DataType = System.Type.GetType("System.String")
Table1.Columns.Add(NOPLACA)

Dim CDCOMBU As DataColumn = New DataColumn("CDCOMBU")
CDCOMBU.DataType = System.Type.GetType("System.String")
Table1.Columns.Add(CDCOMBU)

Em seguida Através de um OleDbDataReader busco informações em meu banco de dados e jogos estas informações em outro DataTable como abaixo;

'define o dataadapter e o datatable
            Dim da1 As OleDbDataReader
            Dim dt As New DataTable
            Dim cmdBc As New System.Data.OleDb.OleDbCommand()
            cmdBc.Connection = con
            cmdBc.CommandText = "SELECT campo FROM minhatabela 

Dim dsExcel As New DataSet
            Dim daExcel As New OleDbDataAdapter(cmdBc)
            daExcel.Fill(dsExcel)
            daExcel.FillSchema(dsExcel, SchemaType.Source)

Em seguida pego o caminho da planilha que devo ler para comparar com os dados do meu Bco de Dados jogando as informações num objeto Excel.ApplicationClass

If FileUpload1.HasFile Then
            
Dim fileExt As String
fileExt = System.IO.Path.GetExtension(FileUpload1.FileName)
Dim varimg As String = System.IO.Path.GetFullPath(FileUpload1.PostedFile.FileName)
Dim strSource1 As String = Me.FileUpload1.PostedFile.FileName

Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" + strSource1 + ";" & _
                "Extended Properties=" & Chr(34) & "Excel 8.0;HDR=Yes" & Chr(34))

Dim excel As New Excel.ApplicationClass
Dim row As Integer
Dim contLinhaBranco As Integer = 0
'conexão com mde
       
Dim varcodigo As String = cboSeccional.SelectedValue
'variaveis para altera placa (varNumeral;varComb)
Dim varNumeral As String
Dim varComb As String
Dim controle As Integer = 0
excel.Workbooks.Open(varimg)
row = 2
Dim escreve As String = String.Empty

E por fim faço as comparações necessarias na planilha e no meu DataTable conforme abaixo:

While contLinhaBranco <= 15
           With excel
If Trim(CStr(excel.Range("A" & row).Value)) <> "" Or  Trim(CStr(excel.Range("B" & row).Value)) <> "" Then
     If row > 8 Then
          varPlaca = CStr(.Range("A" & row).Value())
          If Len(varPlaca) > 7 Then

Dim registros1() As DataRow = dsExcel.Tables(0).Select("NOPLACA='" & varPlaca & "'")

For Each registro As DataRow In registros1
'Comando de intruçoes
Next
                          
If registros1.Length = 0 Then
      		'PLACA NÃO ENCONTRADA
      			Row1 = Table1.NewRow()
            Row1.Item("patrimonio") = "  "
      		      Row1.Item("NOPLACA") = varPlaca
            		Row1.Item("CDCOMBU") = "PLACA NÃO ENCONTRADA"
            Table1.Rows.Add(Row1)
       	End If 

  End With
End While

Como havia dito no Servidor funciona bem em outra máquina da rede dá aquela mensagem de erro, se houver uma forma melhor de fazer isto eu agradeço a ajuda

Rechousa Edit:

Formatação de código

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Duas coisas:

1) Tenta formatar o código. Para quem lê, fica muito mais fácil de perceber o teu problema, do que ter texto e código tudo misturado.

2) As máquinas têm características semelhantes? Uma não será 32 bits e a outra 64?


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
José Lopes

Não será uma questão de permissões????


Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!

Share this post


Link to post
Share on other sites
estanislau

Olá Rechousa e José Lopes

Seguirei, na próxima vez, tuas recomendações e as agradeço, porém informo que as máquinas têm características semelhantes sim, são de 32 bits, porém quando José Lopes informa sobre a questão das permissões: informo que o usuário está com acesso normal à pasta compartilhada, estive fazendo algumas permissões de pasta conforme orientação deste sítio http://support.microsoft.com/kb/207574/pt-br mas ainda continuo com o problema já fiz estas configurações no servido e no usuário e ainda não encontro uma solução, se vocês tiverem mais alguma dicas meus agradecimentos antecipados

Sds.

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.