>

이 스크립트를 작성하여 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 파일이 이미 열려 있어도 직렬 포트 연결이 끊어지는 것을 방지하는 솔루션을 찾을 수 없었습니다. 주요 배경에 대한 설명은 다음과 같습니다.

실제로 가장 중요한 아이디어는 특정 번호가 포함 된 QR 코드를 스캔하여 번호를 검색 한 다음 해당 번호가 발견되면 새 파일에 정보를 쓰는 것입니다. 이 문제를 Xlsx 파일 대신 .csv 파일에 작성하여이 문제를 해결했습니다. 이제는 크랙 할 수없는 하나의 문제를 제외하고는 모든 것이 잘 작동합니다. 직렬 포트를 통해 스캐너를 연결했습니다. 이 .csv 파일을 언제든지 열고 액세스하는 많은 사용자가 있습니다. 프로그램이 실행 중이고 파일이 닫히면 스캔 부분이 제대로 작동합니다. 그러나 파일이 열려 있고 누군가 qr 코드를 스캔하면 .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()


  • 답변 # 1

    하지만 코드에 있습니다. 그 값을 찾을 때마다 (그리고 그 vlaue가있는 여러 행 일 수 있습니다.), 새 시트에 씁니다.

    루프 전에 대상 통합 문서를 열고 옆에 작성해야하는 행을 추적하면 해당 값이 모두 단일 시트로 표시됩니다.

    문자열 보간법을 사용하는이 스 니펫과 같은 것 :

    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을 사용하는 경우 적절하게 조정하십시오.

관련 자료

  • 이전 ios - 플레이어 앱으로 돌아간 후 소리가 들리지 않습니다
  • 다음 c++ - VS 코드의 디버그 오류