如何使用Python从Excel中获取数据粘贴到网页,然后再获取网页内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Python从Excel中获取数据粘贴到网页,然后再获取网页内容相关的知识,希望对你有一定的参考价值。
参考技术A 网页的内容复制到Excel里面去的方法如下: 打开网页,定位到需要复制内容的页面,键盘Ctrl+A全选,Ctrl+C复制当前页面。 启动Excel软件,Ctrl+V粘贴到Excel的空白工作表中,这样,网页的内容就会被复制到Excel中本回答被提问者采纳 参考技术B 这个可以有,看私信如何使用特定单词在excel中复制一行并粘贴到另一个excel表?
【中文标题】如何使用特定单词在excel中复制一行并粘贴到另一个excel表?【英文标题】:How to copy a line in excel using a specific word and pasting to another excel sheet? 【发布时间】:2012-07-22 19:12:39 【问题描述】:我检查了一堆不同的帖子,但似乎找不到我正在寻找的确切代码。此外,我以前从未使用过 VBA,所以我试图从其他帖子中获取代码并输入我的信息以使其工作。还没有运气。在工作中,我们在 Excel 中有一个工资系统。我正在尝试搜索我的名字"Clarke, Matthew"
,然后复制该行并将其粘贴到我保存在桌面上的工作簿"Total hours"
。
【问题讨论】:
如果您在单个列上搜索关键字(例如,所有“Clarke, Matthew
”都在A列上),那么Excel的过滤功能应该可以工作。
也许张贴你所拥有的东西会给我们一个更好的地方开始提供帮助。您还可以查看VLOOKUP
函数。
看到这个***.com/questions/10319096/…修改它以满足您的需要:)
或者这个***.com/questions/11317172/…
@SiddharthRout 您对这个问题的回答对我有用。在 2 分钟内从 Google 到工作宏,尽管有您的链接!
【参考方案1】:
代码
Sub Sample()
Dim wb1 As Workbook, wb2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim copyFrom As Range
Dim lRow As Long '<~~ Not Integer. Might give you error in higher versions of excel
Dim strSearch As String
Set wb1 = ThisWorkbook
Set ws1 = wb1.Worksheets("yourSheetName")
strSearch = "Clarke, Matthew"
With ws1
'~~> Remove any filters
.AutoFilterMode = False
'~~> I am assuming that the names are in Col A
'~~> if not then change A below to whatever column letter
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
With .Range("A1:A" & lRow)
.AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
End With
'~~> Remove any filters
.AutoFilterMode = False
End With
'~~> Destination File
Set wb2 = Application.Workbooks.Open("C:\Sample.xlsx")
Set ws2 = wb2.Worksheets("Sheet1")
With ws2
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lRow = 1
End If
copyFrom.Copy .Rows(lRow)
End With
wb2.Save
wb2.Close
End Sub
快照
【讨论】:
TY 用于所有反馈。我正在尝试使用第二个宏,但现在在这一行收到一条错误消息。AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*" .... 告诉我“运行时错误 1004:范围的自动过滤方法失败'。有什么建议吗? 你在这里设置了什么?With .Range("A1:A" & lRow)
?
我保持不变,比我尝试 A1:A50 假设它意味着 A 列中第 1 行到第 50 行的范围。仍然没有运气.. 我刚刚意识到这张表是受保护的,现在当我尝试在该表上运行宏时,它说我不能。还有其他方法吗?我不确定这些工作表是否允许使用宏
我将如何发送或发布它?怀疑我可以从这些计算机上。此外,我使用未受保护的启用宏的文件运行宏,它确实有效。当我尝试在其他受保护的文件上使用相同的宏时,我收到一个错误,我需要取消保护它才能做到这一点。
您没有该工作表的密码吗?【参考方案2】:
扩展 timrau 在他的评论中所说的内容,您可以使用 AutoFilter 功能查找包含您姓名的行。 (请注意,我假设您打开了源工作簿)
Dim curBook As Workbook
Dim targetBook As Workbook
Dim curSheet As Worksheet
Dim targetSheet As Worksheet
Dim lastRow As Integer
Set curBook = ActiveWorkbook
Set curSheet = curBook.Worksheets("yourSheetName")
'change the Field number to the correct column
curSheet.Cells.AutoFilter Field:=1, Criteria1:="Clarke, Matthew"
'The Offset is to remove the header row from the copy
curSheet.AutoFilter.Range.Offset(1).Copy
curSheet.ShowAllData
Set targetBook = Application.Workbooks.Open "PathTo Total Hours"
Set targetSheet = targetBook.WorkSheet("DestinationSheet")
lastRow = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
targetSheet.Cells(lastRow + 1, 1).PasteSpecial
targetBook.Save
targetBook.Close
如您所见,我为您的工作簿的特定设置添加了占位符。
【讨论】:
ActiveSheet.AutoFilter.Range.Offset(1).Copy
这是不正确的做法 :) 请查看我在评论中发布的两个链接。
@Siddharth 我发现AutoFilter.Range
工作正常。 SpecialCells(xlCellTypeVisible)
也应该可以工作,但我也遇到了返回空白单元格的问题。【参考方案3】:
我知道这已经过时了,但对于其他正在寻找如何做到这一点的人来说,它可以以更直接的方式完成:
Public Sub ExportRow()
Dim v
Const KEY = "Clarke, Matthew"
Const WS = "Sheet1"
Const OUTPUT = "c:\totalhours.xlsx"
Const OUTPUT_WS = "Sheet1"
v = ThisWorkbook.Sheets(WS).Evaluate("index(a:xfd,match(""" & KEY & """,a:a,),)")
With Workbooks.Open(OUTPUT).Sheets(OUTPUT_WS)
.[1:1].Offset(.[counta(a:a)]) = v
.Parent.Save: .Parent.Close
End With
End Sub
【讨论】:
以上是关于如何使用Python从Excel中获取数据粘贴到网页,然后再获取网页内容的主要内容,如果未能解决你的问题,请参考以下文章
如何从网站获取文本数据并使用python存储为excel文件
使用JSF(Primefaces)将数据从Excel复制并粘贴到Datatable