繁体   English   中英

如何复制csv内容并将其粘贴到Excel工作表?

[英]How to copy csv contents and paste to Excel sheet?

我正在使用python v3 xlwings库与MS Excel进行交互。 我有一个csv文件ToCopy.csv并想将此cvs文件的全部内容复制到Excel文件中。

import xlwings as xw

Book_name = 'C:/Temp/ExcelBook.xlsm'
sheet_name = 'SheetName' #paste into this sheet

wb = xw.Book(Book_name)
sht = wb.sheets[sheet_name]

我查看了xlwings文档,但仍然对如何入门感到迷茫。 有人可以给我先机吗?

我愿意使用不基于xlwings库的其他方法。 但是,我的Excel文件受密码保护,我知道xlwings可以处理受密码保护的Excel文件。 我不确定其他方法。

自从您写过xlsxwriter以来,这可能不起作用,但是您考虑过使用openpyxl吗?

from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows
import pandas as pd

df = pd.read_csv('ToCopy.csv', header=None, index_col=None)
wb = load_workbook(filename='C:/Temp/ExcelBook.xlsm')
ws = wb.create_sheet()
ws.title = 'ToCopy'

for r in dataframe_to_rows(df, index=False, header=False):
    ws.append(r)

wb.save('C:/Temp/ExcelBook.xlsm')

因此,从文档http://docs.xlwings.org/en/stable/quickstart.html

从范围读取/写入值很容易:

 >>> sht.range('A1').value = 'Foo 1' >>> sht.range('A1').value 

“ Foo 1”有许多便利功能,例如范围扩展:

 >>> sht.range('A1').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]] >>> sht.range('A1').expand().value [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]] 

在第一个示例中,将一个值写入位置A1。 在第二个中,将值写入A1,B1,C1和A2,B2,C2

所以你可能想做类似的事情

for row,line in enumerate(inputcsv):
  myrange = 'A'+row
  mydata = line.split(',')
  sht.range(myrange).value = mydata

其他选项:

  1. Excel将直接导入csv-手动导入
  2. Excel中的VBA宏导入文件,通过xlwing触发

尝试打开csv并直接另存为xlsx:

import xlwings as xw
wb = xw.Book('C:\source.csv')  # Connect to an existing file
# wb = xw.Book(r'C:\Users\hhsg\Desktop\target.xlsx')  # On Windows: use raw strings to escape backslashes
wb.save('C:\target.xlsx')
# wb.save(r'C:\target.xlsx')  # On Windows: use raw strings to escape backslashes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM