python xls文件转换为xlsx文件
时间: 2023-08-06 10:06:19 浏览: 234
你可以使用openpyxl库将xls文件转换为xlsx文件。下面是一个示例代码:
```python
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl import Workbook
from openpyxl.compat import range
def convert_xls_to_xlsx(xls_file, xlsx_file):
# 打开xls文件
xls_workbook = openpyxl.load_workbook(xls_file, read_only=True, keep_vba=False, data_only=True)
# 创建新的xlsx文件
xlsx_workbook = Workbook()
# 遍历xls文件中的每个工作表
for sheet_name in xls_workbook.sheetnames:
xls_sheet = xls_workbook[sheet_name]
xlsx_sheet = xlsx_workbook.create_sheet(title=sheet_name)
# 复制每个单元格的值和样式到新的xlsx文件中
for row in xls_sheet.iter_rows():
for cell in row:
xlsx_sheet[cell.coordinate].value = cell.value
if cell.has_style:
xlsx_sheet[cell.coordinate].font = cell.font
xlsx_sheet[cell.coordinate].border = cell.border
xlsx_sheet[cell.coordinate].fill = cell.fill
xlsx_sheet[cell.coordinate].number_format = cell.number_format
xlsx_sheet[cell.coordinate].alignment = cell.alignment
# 调整列宽
for column_cells in xls_sheet.columns:
max_length = 0
column = column_cells[0].column_letter
for cell in column_cells:
try:
if len(str(cell.value)) > max_length:
max_length = len(cell.value)
except:
pass
adjusted_width = (max_length + 2) * 1.2
xlsx_sheet.column_dimensions[column].width = adjusted_width
# 删除默认创建的空白工作表
del xlsx_workbook["Sheet"]
# 保存xlsx文件
xlsx_workbook.save(xlsx_file)
# 示例用法
xls_file = "example.xls"
xlsx_file = "example.xlsx"
convert_xls_to_xlsx(xls_file, xlsx_file)
```
在示例中,我们首先使用`openpyxl.load_workbook()`函数打开xls文件,然后使用`openpyxl.Workbook()`创建一个新的xlsx文件。接下来,我们遍历xls文件中的每个工作表,并将每个单元格的值和样式复制到新的xlsx文件中。最后,我们调整每列的宽度,并删除默认创建的空白工作表。最后,我们使用`xlsx_workbook.save()`函数保存xlsx文件。
确保在运行代码之前安装openpyxl库,可以使用以下命令进行安装:
```
pip install openpyxl
```
请将`xls_file`和`xlsx_file`变量替换为你实际的文件路径。
阅读全文