[英]How to copy data from One Excel sheet to another sheet for same Workbook Using Python?
[英]Copy data from one excel sheet to another excel sheet
我正在編寫此腳本以在 Excel 工作表中搜索一個數字,然后復制與該數字關聯的整行,然后將其粘貼到一個新的 Excel 工作表中。 我想一行一行地復制相同的數據,就像我執行程序並保存它一樣。 我試圖通過在這個社區中搜索類似的問題,通過多種方式找出解決方案,但它不起作用。 下面是代碼。
import xlsxwriter
import xlrd
import xlwt
import math
def open_file(path):
wb = xlrd.open_workbook(path)
sheet = wb.sheet_by_index(0)
for row_num in range(sheet.nrows):
row_value = sheet.row_values(row_num)
if row_value[2] == 68860:
row = 0
col = 0
wbk = xlsxwriter.Workbook('or.xlsx')
ws = wbk.add_worksheet()
ws.write('A1', row_value[0])
ws.write('B1', row_value[1])
ws.write('C1', row_value[2])
row = row + 1
wbk.close()
if __name__ == "__main__":
path = "ord.xlsx"
open_file(path)
任何建議,我將不勝感激。
編輯版本:我解決了我面臨的問題。 現在,即使 .csv 文件已經打開,我也找不到防止中斷串行端口連接的解決方案。 這里是對主要背景的解釋。
實際上,最初的想法是通過掃描包含該特定號碼的二維碼來搜索該號碼,如果找到該號碼,則將信息寫入新文件。 我通過將其寫入 .csv 文件而不是 Xlsx 文件解決了這個問題。 現在一切正常,除了一個我無法破解的問題。 我已經通過串口連接了我的掃描儀。 會有很多用戶隨時打開和訪問這個 .csv 文件。 當程序運行並關閉文件時,掃描部分工作正常。 但是當文件打開並且有人掃描任何二維碼時,肯定會給出.csv文件打開的錯誤,並且整個程序會崩潰,我們必須一次又一次地運行它。 有沒有可能如何防止程序爆發並即使文件打開也繼續? 下面是我的代碼。
if(ser.isOpen()):
ser.flushInput()
ser.flushOutput()
while(1):
y = ser.readline().decode("ASCII")
if (str(y)!=''):
if (str(y)!='\r'):
if (str(y)!='\n'):
print(y)
for row_num in range(sheet.nrows):
row_value = sheet.row_values(row_num)
if int(y) == int(row_value[0]):
if re.match("(11\d+)", row_value[0]) is not None:
file = open('Function.csv', 'a')
file.write(str(row_value[0])+";"+str(row_value[1])+"\n")
file.close()
ser.close()
您的代碼中有一個但是。 每次您找到該值(並且它們可能是具有該值的多行,對嗎?),您將寫入新工作表。
如果您在循環之前打開目標工作簿,並跟蹤您應該在旁邊寫入的行,則會將所有這些值放入單個工作表中。
像這個使用字符串插值的片段:
def open_file(path):
row_in_output = 1
wbk = xlsxwriter.Workbook('or.xlsx')
ws = wbk.add_worksheet()
[...]
ws.write("A{row_in_output}", row_value[0])
ws.write("B{row_in_output}", row_value[1])
ws.write("C{row_in_output}", row_value[2])
row = row + 1
row_in_output = row_in_output + 1
wbk.close()
PS 我正在使用 Python 3.6 插值語法。 如果您使用較舊的 Python,請相應地進行調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.