簡體   English   中英

將數據從一個 Excel 工作表復制到另一個 Excel 工作表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM