Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

razs

[Resolvido] importar excel para asp

Recommended Posts

preciso de importar algumas colunas de um ficheiro xls para uma pagina em asp, alguem tem uma ideia de como fazer isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a sua dúvida exatamente?

 

Arquivos XLS podem ser utilizados através do ADO. Nesse caso você consegue utilizar da mesma forma que utiliza um banco de dados comum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu preciso que o script va buscar um ficheiro excell especifico e que mostre apenas os valores de algumas colunas num form.

 

como uma base de dados??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo de acesso a um arquivo XLS.

 

Dim ConexaoExcel, ObjConexaoExcel, dados

ConexaoExcel = "Driver={Microsoft Excel Driver (*.xls)}; DriverId=790; DBQ=" & Server.MapPath("lista_de_emails.xls")
Set ObjConexaoExcel = Server.CreateObject("ADODB.Connection")
ObjConexaoExcel.Open ConexaoExcel

Set dados = ObjConexaoExcel.Execute("SELECT * FROM [emails$]")
If (Not dados.Eof) Then
While (Not dados.Eof)
	Response.Write dados("email") & "<br />"

	dados.MoveNext
Wend
End If
dados.Close
Set dados = nothing

 

* A tabela [emails$], se refere a uma pasta (ou planilha) dentro do arquivo XLS com nome de "emails"

 

* dados("email"), se refere a primeira linha da coluna que chama "email"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu-me um erro

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

/oct/6.asp, line 5 

 

Eu preciso de algum driver para isto?

 

Como faço para mudar o nome da coluna? Nao mudar de A para outra coisa.

 

Obrigado pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

A coluna com nome de A, B, C não é alterada.

 

Na verdade é na primeira linha que você informa o nome da coluna. Por exemplo, em A1, B1, C1, etc.

 

Quando ao Driver eu nunca precisei instalar nada, mas acredito que basta ter o Excel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você també ode usar ASp.net muito fácil e rápido e pode rodar ASp Classic junto com .Net

 

mas aqui um exemplo tb

 

<%@Language="VBScript"%>
<%

Dim intColunas, intLinhas
Dim objConn, objRs, objTable
'Modificando
dim tabela : tabela = ""
dim query : query = "INSERT INTO banco ("
dim valores, valorAspa
dim queryfinal

Set objConn = Server.CreateObject("ADODB.Connection")

With objConn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source="& Server.MapPath("pasta.xls") &";Extended Properties=Excel 8.0;"
.Open
End With

Set objTable = Server.CreateObject("ADOX.Catalog")
objTable.ActiveConnection = objConn

for j = 0 to objTable.tables.count - 3
if lcase(objTable.tables(j).Type) = "table" Then

 set objRs = Server.CreateObject("ADODB.Recordset")
 objRs.CursorLocation = 3
 objRs.Open "SELECT * FROM ["&Cstr(Ucase(objTable.tables(j).Name))&"] ",objConn
 intCount = 0
 if Not objRs.Eof Then
  intColunas  = objRs.Fields.Count
  Response.Write ("<table border=""0"">" & vbNewline)
  If intCount = 0 Then
               Response.Write ("<tr>" & vbNewline)
               For i = 0 To (intColunas-1)
                if i <> 0 then tabela = tabela&", " 
                Response.Write ("<td><font size=""1"" face=""verdana""> " & objRs.Fields(i).Name & "</td>" & vbNewline)
                tabela = tabela&objRs.Fields(i).Name 
               next
               query = query & tabela & ") VALUES ("
               Response.Write ("</tr>" & vbNewline)
  End If
  Do While Not objRs.Eof  
               Response.Write ("<tr>" & vbNewline)
               valores = ""
               For i = 0 To (intColunas-1)
                if i <> 0 then valores = valores&", " 
                Response.Write ("<td><font size=""1"" face=""verdana""> " & objRs.Fields(i).Value & "</td>" & vbNewline)
                if Isnumeric(objRs.Fields(i).Value) then valorAspa = "" else valorAspa="'"
                valores = valores&valorAspa&objRs.Fields(i).Value&valorAspa
               Next
               Response.Write "<td>"&query&valores&");</td>"
               response.write ("</tr>" & vbNewline)
               objRs.MoveNext
  Loop
  Response.Write ("</table>" & vbNewline)  

 End If  
 objRs.Close
 Set objRs = Nothing  
 Response.Write ("<br/>")
end if
next

objConn.Close
Set objConn = Nothing
Set objTable = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não conseguiu porque? Qual o erro gerado?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<%  
Dim sSourceXLS
       Dim sDestXLS
       sDestXLS = Server.MapPath(".") & "\teste.xls"  ' caminho e nome do arquivo xls
       Dim oConn
       Set oConn = Server.CreateObject("ADODB.Connection") 'conexao com o xls
       oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDestXLS & ";Extended Properties=""Excel 8.0;HDR=NO;"""
       Dim oRS 
       Set oRS = Server.CreateObject("ADODB.Recordset") 'objeto recordset que armazena os dados do xls
'F1 = coluna 1 do xls, F2 = coluna 2, e assim sucessivamente...se for * seleciona todas as colunas
       oRS.Open "Select F1 from tabelaXls", oConn, 1, 3 'executa o recordset
do while not oRS.eof 'listando as celulas do arquivo
 Response.Write(oRS.Fields(0).Value)'fields tem o numero da coluna do xls,
 Response.Write("<br>")
 oRS.movenext
loop
oRS.close
set oRS=nothing
       oConn.Close
       Set oConn = Nothing
'Abra o xls vá em Menu-Inserir=>>Nome=>>Definir 
'escolha o nome da sua seleção de celulas, esse nome é o mesmo que vai no sql, como se fosse o nome da tabela, no exemplo está como tabelaXLS
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da-me erro nesta linha:

 

  oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDestXLS & ";Extended Properties=""Excel 8.0;HDR=NO;"""

 

 

ADODB.Connection error '800a0e7a'

 

Provider cannot be found. It may not be properly installed.

 

/oct/2.asp, line 16

Compartilhar este post


Link para o post
Compartilhar em outros sites

já consegui, agora precisava de conseguir fazer os selects mais especificos mas da-me erro de string

 

Como faço se eu quiser fazer o select tipo isto

strSQL = "SELECT * FROM A1:Q10000 where column 1 = 35 and column 2 = 1"

 

 

<% Option Explicit %>
<html>
<body>
<%
Dim objConn, objRS, strSQL
Dim x, curValue

Set objConn = Server.CreateObject("ADODB.Connection")
'objConn.Open "DRIVER={Microsoft Excel Driver (*.xls)}; IMEX=1; HDR=NO; "& "Excel 8.0; DBQ=" & Server.MapPath("MyExcel.xls") & "; "

'if using xslx (Excel 2007) use this instead:
objConn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};"& "DBQ=" & Server.MapPath("MyExcel.xls") & ";"

strSQL = "SELECT * FROM A1:Q10000"
Set objRS=objConn.Execute(strSQL)
Response.Write("<table border=""1"">")
Response.Write("<tr>")
For x=0 To objRS.Fields.Count-1
  Response.Write("<th>" & objRS.Fields(x).Name & "</th>")
Next
Response.Write("</tr>")
Do Until objRS.EOF
Response.Write("<tr>")
For x=0 To objRS.Fields.Count-1
	curValue = objRS.Fields(x).Value
	If IsNull(curValue) Then
		curValue="N/A"
	End If
	curValue = CStr(curValue)
	Response.Write("<td>" & curValue & "</td>")
Next
Response.Write("</tr>")
objRS.MoveNext
Loop
objRS.Close
Response.Write("</table>")
objConn.Close
Set objRS=Nothing
Set objConn=Nothing
%>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.