在数据分析和处理的过程中,Excel文件格式是非常常用的,尤其是.xls
和.xlsx
格式。.xls
是较早的Excel文件格式,而.xlsx
是Excel 2007及之后版本的文件格式。由于.xls
文件在数据存储和处理的灵活性上有其局限性,因此在实际应用中,我们常常需要将.xls
文件转换为.xlsx
格式。本文将介绍四种方法来实现.xls
文件转换为.xlsx
文件,并给出相应的代码示例。
方法一:使用 pandas
和 xlrd
库
pandas
是一个强大的数据分析库,同时它也提供了很好的Excel文件读写功能。要读取.xls
文件,我们还需要使用xlrd
库。下面是一个基本的示例:
import pandas as pd
# 读取 .xls 文件
xls_file_path = 'example.xls'
df = pd.read_excel(xls_file_path, sheet_name=None) # sheet_name=None表示读取所有表格
# 保存为 .xlsx 文件
xlsx_file_path = 'example.xlsx'
with pd.ExcelWriter(xlsx_file_path, engine='xlsxwriter') as writer:
for sheet_name, data in df.items():
data.to_excel(writer, sheet_name=sheet_name, index=False)
print("转换完成,保存为 example.xlsx")
在这个示例中,我们首先使用pandas
读取了一个.xls
文件,然后使用ExcelWriter
将数据保存为.xlsx
格式。
方法二:使用 openpyxl
和 xlrd
库
openpyxl
是专门用于处理.xlsx
格式的库,可以与xlrd
结合来实现文件格式转换。下面是示例代码:
import xlrd
from openpyxl import Workbook
# 读取 .xls 文件
xls_file_path = 'example.xls'
workbook = xlrd.open_workbook(xls_file_path)
# 创建一个新的 .xlsx 文件
xlsx_workbook = Workbook()
# 遍历每个sheet
for sheet_index in range(workbook.nsheets):
sheet = workbook.sheet_by_index(sheet_index)
xlsx_sheet = xlsx_workbook.create_sheet(title=sheet.name)
for row_index in range(sheet.nrows):
xlsx_sheet.append(sheet.row_values(row_index))
# 删除默认创建的空白sheet
if 'Sheet' in xlsx_workbook.sheetnames:
del xlsx_workbook['Sheet']
# 保存为 .xlsx 文件
xlsx_file_path = 'example.xlsx'
xlsx_workbook.save(xlsx_file_path)
print("转换完成,保存为 example.xlsx")
该示例中,我们使用xlrd
读取.xls
文件,然后通过openpyxl
创建新的.xlsx
文件,并将数据逐行写入。
方法三:使用 pyxlsb
(只针对二进制文件)
如果你的.xls
文件是二进制的,那么可以使用pyxlsb
库来读取数据,不过这个方法相对少用。以下是简单的示例:
from pyxlsb import open_workbook
import pandas as pd
# 读取 .xlsb 文件
xlsb_file_path = 'example.xlsb'
data = []
with open_workbook(xlsb_file_path) as wb:
with wb.get_sheet(1) as sheet: # 获取第一个sheet
for row in sheet.rows():
data.append([item.v for item in row])
# 将数据转换为 DataFrame
df = pd.DataFrame(data[1:], columns=data[0]) # 第一行是标题
# 保存为 .xlsx 文件
xlsx_file_path = 'example.xlsx'
df.to_excel(xlsx_file_path, index=False)
print("转换完成,保存为 example.xlsx")
在这个示例中,我们首先读取.xlsb
文件,然后使用pandas
将其写入.xlsx
格式。
方法四:使用 pywin32
(Windows平台专用)
在Windows环境下,可以利用pywin32
库与Excel的COM接口进行文件格式转换。代码如下:
import win32com.client
# 创建Excel应用程序对象
excel = win32com.client.Dispatch('Excel.Application')
# 打开 .xls 文件
xls_file_path = 'example.xls'
workbook = excel.Workbooks.Open(xls_file_path)
# 保存为 .xlsx 文件
xlsx_file_path = 'example.xlsx'
workbook.SaveAs(xlsx_file_path, FileFormat=51) # 51表示.xlsx格式
# 关闭工作簿和Excel应用程序
workbook.Close()
excel.Quit()
print("转换完成,保存为 example.xlsx")
该方法通过操作Excel自身的应用程序,实现了文件格式的直接转换,它的优点在于对Excel的功能支持更加全面,但缺点是需要安装Excel,并且仅限于Windows系统。
总结
以上是四种将.xls
文件转为.xlsx
文件的方法,每种方法都有其适用场景和优缺点。根据具体的需求和环境选择合适的方法,将有助于高效处理Excel文件。希望这篇文章对你有所帮助!