วิธีแก้ไขไฟล์ Excel (xlsx) โดยใช้ linux shell


11

มีวิธี (เครื่องมือ) ในการแก้ไขไฟล์ XLSX โดยใช้ Linux shell หรือไม่? สิ่งที่ฉันต้องการคือวิธีลบสามแถวสุดท้ายที่ไม่ว่างเปล่าออกจากแผ่นงานแรก

ฉันรู้ว่า XLSX เป็นเพียงไฟล์ซิปเต็มไปด้วยไฟล์ XML ที่แตกต่างกันซึ่งฉันสามารถแก้ไขทีละรายการ อย่างไรก็ตามฉันต้องการหลีกเลี่ยงการวิเคราะห์และเปลี่ยนแปลงไฟล์ XML ด้วยตนเองถ้าเป็นไปได้

คำตอบ:


14

ความคิดของฉันคือสคริปต์หลามแบบนี้:

import pandas as pd
filename=argv[1]
df = pd.read_excel(filename,sheet_name="Sheet1").ix[:-3] ## read the xlsx without last 3 rows to a dataframe
df.write_excel("output_sheet.xlsx") #write dataframe to xlsx file

เพื่อตรวจสอบ "non-emptiness" ที่คุณสามารถใช้ได้ df.notna()


ฟังดูมีแนวโน้ม - จะลองทำดู เพื่อให้แน่ใจว่า - df.ix [: - 3] - จะลบแถวที่ไม่ว่างเปล่าสามแถวสุดท้ายใช่หรือไม่ เนื่องจากแผ่นงาน excel มีแถวที่ว่างเปล่าจำนวนมากหากคุณดูไฟล์ xml ใน xlsx
Bojan Hrnkas

2
มันจะลบ 3 แถวสุดท้าย แถวว่างหลังจากแถวที่ไม่ใช่แถวสุดท้ายจะถูกละเว้น เพื่อความสะดวกที่นี่: pandas.pydata.org/pandas-docs/version/0.22/generated/ ......มีการอ้างอิงของ pafas dataframe
DDS

-3

Libreoffice (และอาจเป็น OpenOffice) สามารถอ่านไฟล์. xlsx ที่สร้างโดย Excel หากคุณไม่มีไฟล์จำนวนมากที่ต้องดำเนินการด้วยวิธีนี้การทำด้วยตนเองใน Libreoffice เป็นวิธีที่ง่ายที่สุดในการดำเนินการ หากคุณมีไฟล์จำนวนมากและต้องการโซลูชันอัตโนมัติ Libreoffice สามารถใช้สคริปต์ได้ ดูเอกสาร APIหรือเริ่มด้วยบทแนะนำเพิ่มเติม


2
สิ่งนี้ไม่ได้ผลสำหรับฉันเพราะฉันต้องการจะทำบางสิ่งบางอย่างบนเซิร์ฟเวอร์ที่ไม่มีส่วนหัว
Bojan Hrnkas

2
@ท่อ. เป็นไปได้หรือไม่ที่จะรัน LibreOffice ในโหมด headless ใช่ไหม?
TRiG

3
@TRiG แน่นอนและเป็นคำตอบที่ให้รายละเอียดว่าจะเป็นคำตอบที่ดีได้อย่างไร นี่ไม่ใช่คำตอบนั้น
ท่อ

1
@pipe การโทร LibreOffice "เครื่องมือ gui แบบครั้งเดียว" ค่อนข้างสุดขีด มันเป็นสิ่งที่ตรงกันข้ามกับสิ่งที่เป็นจริง
บาร์บีคิว

1
การเปิด LibreOffice ในโหมด Headless นั้นง่ายเหมือนการใช้--headlessตัวเลือก
จอห์นนี่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.