programing

Panda를 사용하여 *.xlsx long URL을 셀에 저장하는 방법

stoneblock 2023. 6. 3. 08:07

Panda를 사용하여 *.xlsx long URL을 셀에 저장하는 방법

예를 들어 2개의 열(id 및 URL)이 있는 DataFrame에 Excel 파일을 읽습니다.입력 파일의 URL은 텍스트와 같습니다(하이퍼링크 없음).

input_f = pd.read_excel("input.xlsx")

이 데이터 프레임 내부의 내용을 확인하십시오. 모든 내용이 성공적으로 읽혔으며 모든 URL이 정상입니다.input_f그 후 이 파일을 _excel에 저장하지 않을 때

input_f.to_excel("output.xlsx", index=False)

경고를 받았습니다.

경로\worksheet.py:836 : 사용자 경고:링크 또는 위치/앵커가 255자 이상인 URL 'http://here long URL'이 URL force_unicode(url)에 대한 Excel의 제한을 초과하므로 무시합니다.

그리고 출력.URL이 긴 xlsx 셀이 비어 있고 URL이 하이퍼링크가 됩니다.

어떻게 고칠까요?

문자열을 URL로 변환하지 않는 옵션을 사용하여 ExcelWriter 개체를 만들 수 있습니다.

writer = pandas.ExcelWriter(r'file.xlsx', engine='xlsxwriter',options={'strings_to_urls': False})
df.to_excel(writer)
writer.close()

제가 직접 해봤는데 같은 문제가 생겼습니다.임시 CSV 파일을 만든 다음 xlsxwriter를 사용하여 Excel 파일을 만들 수 있습니다.완료되면 tmp 파일을 삭제합니다.xlsxwriter에는 excel이 수행하는 자동 하이퍼링크를 재정의하는 write_string 메서드가 있습니다.이것은 저에게 효과가 있었습니다.

import pandas as pd
import csv
import os
from xlsxwriter.workbook import Workbook
inData = "C:/Users/martbar/Desktop/test.xlsx"
tmp = "C:/Users/martbar/Desktop/tmp.csv"
exFile = "C:/Users/martbar/Desktop/output.xlsx"

#read in data
df = pd.read_excel(inData)

#send to csv
df.to_csv(tmp, index=False)

#convert to excel
workbook = Workbook(exFile)
worksheet = workbook.add_worksheet()
with open(tmp, 'r') as f:
    reader = csv.reader(f)
    for r, row in enumerate(reader):
        for c, col in enumerate(row):
            #if you use write instead of write_string you will get the error
            worksheet.write_string(r, c, col) 
workbook.close()

#delete tmp file
os.remove(tmp)

섹션의 문서: "Passing XlsxWriter 생성자 옵션을 Pandas에 전달",'strings_to_urls': False이제 다음과 같이 지정됩니다.

writer = pd.ExcelWriter('pandas_example.xlsx',
                        engine='xlsxwriter',
                        engine_kwargs={'options': {'strings_to_urls': False}})

그리고 다음과 같이 승인된 응답이 제안하는 것을 계속합니다.

df.to_excel(writer)
writer.close()

언급URL : https://stackoverflow.com/questions/35440528/how-to-save-in-xlsx-long-url-in-cell-using-pandas