Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将文本文件插入现有xlsx_Python_Excel_Xlsx_Openpyxl - Fatal编程技术网

使用Python将文本文件插入现有xlsx

使用Python将文本文件插入现有xlsx,python,excel,xlsx,openpyxl,Python,Excel,Xlsx,Openpyxl,我有一个包含11个工作表的.xlsx文件,我需要从第3行开始插入一个文本文件的内容(tab delim,大约30列,共100行)。我尝试了下面的代码,但最终出现了错误。(使用bash/Linux) 错误: > Traceback (most recent call last): File "./tab2excel_a.py", line 23, > in <module> > xls_writeable_book = xl_copy.copy(xls_r

我有一个包含11个工作表的.xlsx文件,我需要从第3行开始插入一个文本文件的内容(tab delim,大约30列,共100行)。我尝试了下面的代码,但最终出现了错误。(使用bash/Linux)

错误:

> Traceback (most recent call last):   File "./tab2excel_a.py", line 23,
> in <module>
>     xls_writeable_book = xl_copy.copy(xls_readable_book)   File "/usr/local/lib/python2.7/dist-packages/xlutils-1.6.0-py2.7.egg/xlutils/copy.py",
> line 19, in copy
>     w   File "/usr/local/lib/python2.7/dist-packages/xlutils-1.6.0-py2.7.egg/xlutils/filter.py",
> line 937, in process
>     reader(chain[0])   File "/usr/local/lib/python2.7/dist-packages/xlutils-1.6.0-py2.7.egg/xlutils/filter.py",
> line 61, in __call__
>     filter.workbook(workbook,filename)   File "/usr/local/lib/python2.7/dist-packages/xlutils-1.6.0-py2.7.egg/xlutils/filter.py",
> line 287, in workbook
>     self.wtbook.dates_1904 = rdbook.datemode AttributeError: 'Workbook' object has no attribute 'datemode'
>回溯(最后一次调用):文件“/tab2excel_a.py”,第23行,
>在
>xls_writeable_book=xl_copy.copy(xls_readable_book)文件“/usr/local/lib/python2.7/dist packages/xlutils-1.6.0-py2.7.egg/xlutils/copy.py”,
>第19行,副本
>w文件“/usr/local/lib/python2.7/dist-packages/xlutils-1.6.0-py2.7.egg/xlutils/filter.py”,
>第937行,正在处理中
>阅读器(链[0])文件“/usr/local/lib/python2.7/dist-packages/xlutils-1.6.0-py2.7.egg/xlutils/filter.py”,
>第61行,通话中__
>filter.workbook(工作簿,文件名)文件“/usr/local/lib/python2.7/dist-packages/xlutils-1.6.0-py2.7.egg/xlutils/filter.py”,
>第287行,在工作簿中
>self.wtbook.dates_1904=rdbook.datemode AttributeError:“工作簿”对象没有属性“datemode”
有什么建议吗?

看起来(我对这些特定的库并不了解),您正试图将一个对象输入到以下行中的一个方法中:

xls_readable_book = load_workbook('S12.xlsx') #load workbook
xls_writeable_book = xl_copy.copy(xls_readable_book)
因此解释器抱怨这个“未知”对象没有属性
datemode
。因此,请尝试使用方法,因为根据文档,它似乎返回一个与方法完全兼容的对象:


考虑这个
openpyxl
示例:

from openpyxl.workbook.workbook import Workbook # as _Workbook
import csv

wb = Workbook()
wb.create_sheet('Filtered')
ws = wb['Filtered']

with open('test/S12_final.csv') as tab_file:
    tab_reader = csv.reader(tab_file, delimiter='\t')

    # Skipt first 2 Lines
    [next(tab_reader) for skip in range(2)]

    # Append list(rowData) after Sheets last accessed Row
    for rowData in tab_reader:
        ws.append(rowData)

wb.save('test/S12.xlsx')

用Python:3.4.2-openpyxl:2.4.1-LibreOffice:4.3.2测试了

您好,尝试将另一个错误堆栈放入
文件/usr/local/lib/python2.7/dist包/xlwt-0.7.5-py2.7.egg/xlwt/Row.py”,第42行,在uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuiError(“行索引(%r)不是范围内的整数(65536)”%rowx)ValueError:Row索引不是范围内的整数(65536)
“回溯的第一行是什么?
回溯(最后一次调用):文件“/tab2excel_a.py”,第24行,在xls_writeable_book=xl_copy.copy(xls_readable_book)
我的文件是一个xlsx文件,不确定这是否有什么区别here@nbn是的。xls对您可以拥有的行数有一个特定的限制。显然,XLUTIL(或xlrd,或任何依赖项)与新格式xlsx不完全兼容。我的建议是您单独使用openpyxl重新编写代码。使用openpyxl,您可以将文本文件复制到工作表中吗?
xls_readable_book = open_workbook('S12.xlsx') #load workbook
xls_writeable_book = xl_copy.copy(xls_readable_book)
from openpyxl.workbook.workbook import Workbook # as _Workbook
import csv

wb = Workbook()
wb.create_sheet('Filtered')
ws = wb['Filtered']

with open('test/S12_final.csv') as tab_file:
    tab_reader = csv.reader(tab_file, delimiter='\t')

    # Skipt first 2 Lines
    [next(tab_reader) for skip in range(2)]

    # Append list(rowData) after Sheets last accessed Row
    for rowData in tab_reader:
        ws.append(rowData)

wb.save('test/S12.xlsx')