12

我正在尝试加载当前存在的工作表并导入如下所示的文本文件(逗号分隔值)屏幕截图,

电子表格:

在此处输入图像描述

文本文件:

在此处输入图像描述

我正在使用如下所示的代码:

# importing necessary modules for performing the required operation
    import glob
    import csv
    from openpyxl import load_workbook
    import xlwt

    #read the text file(s) using the CSV modules and read the dilimiters and quoutechar
    for filename in glob.glob("E:\Scripting_Test\Phase1\*.txt"):
        spamReader = csv.reader((open(filename, 'rb')), delimiter=',')


        #read the excel file and using xlwt modules and set the active sheet
        wb = load_workbook(filename=r"E:\Scripting_Test\SeqTem\Seq0001.xls")
        ws = wb.worksheets(0)


        #write the data that is in text file to excel file
        for rowx, row in enumerate(spamReader):
            for colx, value in enumerate(row):
                ws.write(rowx, colx, value)

        wb.save()

我收到以下错误消息:

UnicodeDecodeError:“utf8”编解码器无法解码位置 0 中的字节 0xd0:无效的继续字节

还有一个问题:如何告诉python从excel表格中的A3列开始导入文本数据?

4

3 回答 3

4

Unicode 编码让我感到困惑,但你不能通过以下方式强制该值忽略无效字节:

value = unicode(value, errors='ignore')

这是有关 unicode 的更多阅读的一个很好的答案:unicode().decode('utf-8', 'ignore') raise UnicodeEncodeError

于 2013-10-01T14:00:20.217 回答
2

openpyxl仅处理OOXML格式(xlsx/xlsm)。请尝试使用 Excel 保存为 xlsx 文件格式而不是 xls。

如果要将 xls 文件转换为代码中的 xlsx。请尝试以下列表中的一个选项:

  1. 在 Windows 中,您还可以使用excelcnv工具将 xls 转换为 xlxx。
  2. 在 Linux 中,请查看这篇文章
  3. 或者,您可以在 Python 中使用xlrd转换为 xlsx。请检查此问答
于 2014-02-24T06:16:06.530 回答
1

嗨,您确定您没有包含UTF-8 BOM的文档吗

您可以尝试使用UTF-8 BOM 编解码器。一般Windows+UTF+8会有点麻烦。尽管它显示的那个字符可能不是 BOM。

于 2013-10-01T15:51:31.897 回答