วิธีแปลงเป็นชุด. csv เป็น. xls / xlsx


11

ฉันกำลังมองหาวิธีแปลงไดเรกทอรีของไฟล์. csv ให้เป็นรูปแบบ. xls หรือ. xlsx อย่างรวดเร็ว (น่าจะดีถ้าฉันสามารถทำ / หรือ)

มีวิธีง่าย ๆ ในการทำเช่นนี้หรือฉันจำเป็นต้องติดตั้งโปรแกรมของ บริษัท อื่นหรือไม่?


1
ไม่แน่ใจว่าทำไมคุณต้องทำเช่นนั้น csv เปิดได้ดีใน excel ทุกคนที่ต้องการโต้ตอบสามารถเปิดได้โดยไม่มีปัญหา
Jody

2
คุณอยู่ที่ Excel เปิด csv และ xls / xlsx ได้ดี อย่างไรก็ตามโปรแกรมอื่นทำไม่ได้ =)
mindless.panda

1
ดังนั้นคุณต้องการใช้โปรแกรมนี้ในโปรแกรมอะไร?
Kirk

คำตอบ:


21

สมมติว่าคุณชอบและมี Python (ด้วยเหตุผลบางอย่าง) คุณสามารถใช้สคริปต์นี้ที่ฉันทำขึ้น:

import os
import glob
import csv
import xlwt # from http://www.python-excel.org/

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = xlwt.Workbook()
    ws = wb.add_sheet('data')
    with open(csvfile, 'rb') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader):
            for c, val in enumerate(row):
                ws.write(r, c, val)
    wb.save(csvfile + '.xls')

วิ่งเข้าไปในไดเรกทอรีพร้อมไฟล์ CSV ทั้งหมดมันจะแปลงไฟล์ทั้งหมดและตบ ".xls" ไปยังจุดสิ้นสุด

สำหรับ Excel 2007+ (ไฟล์ xlsx) รองรับสูงสุดประมาณ 1 Mrows:

import os
import glob
import csv
import openpyxl # from https://pythonhosted.org/openpyxl/ or PyPI (e.g. via pip)

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = openpyxl.Workbook()
    ws = wb.active
    with open(csvfile, 'rb') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader, start=1):
            for c, val in enumerate(row, start=1):
                ws.cell(row=r, column=c).value = val
    wb.save(csvfile + '.xlsx')

2
สำหรับ Macintosh ฉันใช้ xlsx เวอร์ชั่นด้านบน ฉันต้องเปลี่ยน "rb" เป็น "rU" เพื่อแก้ไขข้อผิดพลาด "universal-newline mode" จาก Python การใช้ "start = 1" สำหรับ "แถวในแจกแจง" และ "val in แจกแจง" สร้างแถวว่างด้านบนและคอลัมน์ว่างด้านซ้ายของข้อมูลจริง ฉันเปลี่ยนทั้งสองเป็น "start = 0" ซึ่งเริ่มต้นข้อมูลในเซลล์ A1 (ซ้ายบน) ของสเปรดชีต (Excel 2011) ฉันเปลี่ยนบรรทัดสุดท้ายเป็น "wb.save (os.path.splitext (csvfile) [0] + '.xlsx')" เพื่อลบส่วน. csv ของไฟล์ (เช่น nnnn.csv.xlsx เป็น nnnn xlsx)
Michael S Taylor

1

นี่คือสคริปต์ Perl ที่คาดคะเนได้ แต่ดูเหมือนว่าจะมีหลายอย่างที่ต้องทำบางสิ่งที่ได้สร้างไว้ใน Excel แล้ว


1

คำถามของคุณมีจำนวนมากที่ยังไม่ได้รับคำตอบ

สมมติว่าไฟล์ CVS ของคุณอยู่ในโครงสร้างไดเรกทอรีคล้ายกับ

c:\randompath\CSV\
    a.csv
    b.csv
    c.csv
      :
      :
    z.csv

และคุณต้องการที่จะจบลงด้วย

c:\randompath\XLS\
    a.xls
    b.xls
    c.xls
      :
      :
    z.xls

ฉันสามารถนึกถึงสามเส้นทางที่จะไปขึ้นอยู่กับอัตราส่วนของงานที่ต้องทำล่วงหน้าเพื่อทำความสะอาดงานที่คุณเต็มใจทำ

  1. ไม่มีการกำหนดล่วงหน้า: ใช้ Windows Explorer เพื่อนำทางไปยังไฟล์ CSV ใช้วิธีใดก็ได้ที่ดีที่สุดในการเลือกไฟล์ที่จะทำการแปลง (lasso, ctrl + a, ctrl + คลิก, shift + คลิก) จากนั้นคลิกขวาที่ไฟล์ที่เลือกแล้วคลิก เปิด. นี่จะเป็นการเปิดไฟล์ทั้งหมดใน Excel จากนั้นสำหรับแต่ละไฟล์คุณสามารถเลือก "ไฟล์" และ "บันทึกเป็น" และสุดท้ายเลือกรูปแบบไฟล์ใหม่ที่คุณต้องการบันทึกไว้
  2. ไฟล์แบทช์ง่าย: ไฟล์แบทช์นั้นสามารถใช้ไวด์การ์ดและ / หรือสำหรับแต่ละโครงสร้างลูปเพื่อเปิดไฟล์ CSV แต่ละไฟล์สำหรับคุณจากนั้นคุณสามารถประมวลผลด้วยตนเองได้เหมือนก่อน
  3. สร้างโปรแกรม VBA ภายในสเปรดชีต Excel: VBA สามารถเปิดไฟล์ CSV แต่ละไฟล์โดยอัตโนมัติแล้วบันทึกเป็นรูปแบบ Excel คุณสามารถเพิ่มกล่องข้อความแบบธรรมดาที่เสนอตัวเลือก xls หรือ xlsx เมื่อเปิดไฟล์แต่ละไฟล์

โปรดทราบว่าฉันยังไม่ได้เขียนรหัสใด ๆ เพื่อทำสิ่งเหล่านี้ (ยัง) ฉันแค่เสนอแนวคิดสำหรับจุดเริ่มต้น บางทีหากคุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณต้องการคุณสามารถรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีจัดการกับวิธีการจากฉันหรือสมาชิกฟอรัมอื่น


0

สำหรับ Windows? CoolUtils " Total CSV Converter " เวอร์ชั่นบรรทัดคำสั่งรองรับรูปแบบเอาต์พุตจำนวนมากรวมถึง JSON, Access, DBF, XML และ SQLและมีเพียง $ 40 สามารถเรียกคืนไดเรกทอรีย่อยลบไฟล์ CSV ดั้งเดิมรวมไฟล์ทั้งหมดไว้ในเอกสารเดียวและอีกมากมาย

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options>

" Advanced CSV Converter " ($ 40-200) เป็น EXE แบบพกพาที่สามารถทำได้อย่างรวดเร็วโดยไม่ต้องติดตั้ง Excel

http://www.dbf2002.com/csv-converter/commandline.html

"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR

SoftInterface ของ " Convert XLS " สามารถใช้ Excel (แต่ไม่จำเป็น) และมีราคาแพงกว่า ($ 500 +) แต่รองรับรูปแบบมากขึ้นและมีตัวเลือกมากขึ้น

http://www.softinterface.com/Convert-XLS/Convert-XLS.htm

"c:\Program Files (x86)\Softinterface, Inc\Convert XLS\ConvertXLS.exe" /V /S"c:\base\*.csv" /T"c:\exports\*.xlsx" /F6 /C51 /M2

" Gnumeric " เป็นโปรแกรมสเปรดชีตโอเพนซอร์ซที่สามารถทำการแปลงโดยตรง แต่มันถูกยกเลิกสำหรับ Windows ในเดือนสิงหาคม 2014

http://www.gnumeric.org/

ssconvert file.csv file.xlsx

หากคุณติดตั้ง Python ไว้ " csv2odf " เป็นตัวเลือกโอเพนซอร์ซและใช้วิธีการ templated ในการสร้างไฟล์ ods, odt, html, xlsx หรือ docx

http://sourceforge.net/projects/csv2odf/

csv2odf data.csv template.odt output.xlsx


-1

วิธีที่ง่าย: เปิดไฟล์ csv ของคุณจาก Microsoft Excel, แปลงข้อความเป็นคอลัมน์ (เลือกเซลล์ / ข้อความ, คลิกเมนู - ข้อมูล - ข้อความเป็นคอลัมน์) ตั้งค่าตัวเลือกของคุณเพื่อแปลง

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