xls to csv converter

9 浏览
0 Comments

xls to csv converter

我正在使用Python中的win32.client将我的.xlsx和.xls文件转换为.csv文件。当我执行这段代码时,它会报错。我的代码如下:

def convertXLS2CSV(aFile):
    '''将一个MS Excel文件转换为同名的csv文件,并保存在相同的目录中'''
    print "------ 开始将XLS转换为CSV ------"
    try:
        import win32com.client, os
        from win32com.client import constants as c
        excel = win32com.client.Dispatch('Excel.Application')
        fileDir, fileName = os.path.split(aFile)
        nameOnly = os.path.splitext(fileName)
        newName = nameOnly[0] + ".csv"
        outCSV = os.path.join(fileDir, newName)
        workbook = excel.Workbooks.Open(aFile)
        workbook.SaveAs(outCSV, c.xlCSVMSDOS) # 24代表xlCSVMSDOS
        workbook.Close(False)
        excel.Quit()
        del excel
        print "...已成功将" + nameOnly + "转换为CSV"
    except:
        print ">>>>>>> 转换" + aFile + "为CSV失败!"
convertXLS2CSV("G:\\hello.xlsx")

我无法找到这段代码中的错误。请帮忙看看。

0
0 Comments

在上述内容中,出现了一个名为(xls to csv converter)的问题。这个问题的出现原因是需要将Excel工作簿中的所有电子表格转换为CSV文件。解决这个问题的方法是使用Python编写代码来实现转换。

在Python 2中,可以使用xlrd和csv库来实现这个功能。首先,使用xlrd库打开Excel文件,并获取所有电子表格的名称。然后,遍历每个电子表格,并使用csv库创建一个与电子表格同名的CSV文件。在写入CSV文件之前,需要将每一行的值转换为UTF-8编码。最后,通过命令行参数传递Excel文件的路径,调用csv_from_excel函数实现转换。

在Python 3中,同样可以使用xlrd和csv库来实现这个功能。与Python 2的代码相比,Python 3的代码做了一些改进。首先,打开CSV文件时需要指定编码为utf-8。其次,在写入CSV文件之前,不再需要将每一行的值转换为UTF-8编码。最后,通过命令行参数传递Excel文件的路径,调用csv_from_excel函数实现转换。

在上述内容中,还提到了一些注释和建议。首先,提到了一些电子表格可能为空的情况,建议在转换之前先判断worksheet.nrows是否大于0。其次,建议使用上下文管理器来处理CSV文件。最后,提供了一个跳过空电子表格的方法,即在遍历电子表格之前检查worksheet.nrows是否为0。

最后,还出现了一个错误信息,提示UnicodeEncodeError。解决这个问题的方法是在打开CSV文件时,使用格式化字符串u'{}.csv'来保证文件名的编码为Unicode。

0
0 Comments

问题:将xls文件转换为csv文件时出现的原因是什么?如何解决这个问题?

在将xls文件转换为csv文件时,可能会出现Unicode编码错误,特别是当xls文件中包含其他语言的文本时。此外,还可能遇到转换速度过慢的问题,以及如何处理Excel单元格内容中可能存在的换行字符。

解决方法:

1. 使用pandas库进行转换。pandas库的语法清晰,且其中的计算密集部分是用Cython或C扩展编写的,以加快处理速度。只需使用顶级函数read_excel和DataFrame类的to_csv方法即可完成转换。代码如下:

import pandas as pd
data_xls = pd.read_excel('your_workbook.xls', 'Sheet1', index_col=None)
data_xls.to_csv('your_csv.csv', encoding='utf-8')

在这段代码中,通过设置encoding='utf-8'来解决Unicode编码错误的问题。

2. 使用xlsx2csv工具。相比pandas库,xlsx2csv工具的转换速度更快。具体使用方法可以参考相关文档或官方说明。

3. 处理Excel单元格内容中的换行字符。可以使用pandas库中的str.replace方法或正则表达式来替换换行字符。具体处理方式可以根据需求进行调整。

我们可以通过使用pandas库或xlsx2csv工具来解决将xls文件转换为csv文件时可能遇到的问题。同时,还可以使用相关方法来处理Unicode编码错误和Excel单元格内容中的换行字符。

0
0 Comments

xls to csv converter是一个用于将Excel文件转换为CSV文件的工具。然而,该工具在不同版本中存在一些问题和限制。

问题的原因是:

1. 版本兼容性:在0.8.0版本之后,xlrd库可以读取XLS和XLSX文件,但在2.0.0版本之后,仅支持XLS文件。

2. 文件读取错误:代码中的一行应该是wr.writerow(sh.row_values(rownum)),而不是wr.writerow(sh.row_values(rownum))。

3. 日期时间转换:不清楚该工具是否支持从Excel日期时间格式转换为普通日期时间格式。

4. 文件关闭操作:最佳实践是在for循环中使用try..finally,以确保无论访问期间是否抛出错误,都能关闭文件。

5. Sheet名称未知:如果不知道Sheet的名称,则可以使用wb.sheet_by_index(0)来获取第一个Sheet,而不管其名称是什么。

解决方法如下:

1. 使用xlrd库打开Excel文件,并获取Sheet对象。

2. 创建一个CSV文件,并使用csv.writer将数据写入CSV文件。

3. 使用try..finally将文件关闭操作包裹起来,以确保文件始终能够被关闭。

4. 对于日期时间转换,需要进一步验证该工具是否支持。

5. 如果需要处理不同版本的Excel文件,可以根据xlrd库的版本来确定文件格式。

6. 注意,该工具不能保留Excel数字的格式。某些数字将以十进制形式写入CSV文件,某些公式也将以十进制形式写入。同时,文本格式的数字值的前导零将被删除。

7. 如果使用Python 3,需要将打开CSV文件的模式从'wb'更改为'w',以避免TypeError错误。

总之,xls to csv converter是一个方便的工具,但在使用过程中需要注意版本兼容性、文件读取错误、日期时间转换以及文件关闭操作等问题。

0