从 xls 文件中删除列 [英] Delete column from xls file

查看:39
本文介绍了从 xls 文件中删除列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 Python,我需要能够对 excel 2007 的工作簿执行以下操作:

Using Python, I need to be able to do the following operations to a workbook for excel 2007:

1.删除列

我正在调查 xlrd;然而.

I am looking into xlrd; however.

谁能告诉我怎么做?

推荐答案

如果你在 Python 3.x 中工作,你会发现使用 xlrd/ 会遇到很多麻烦xlwt/xlutils 系列,因为它们是 Python 2 的模块.

If you're working in Python 3.x, you'll find a lot of trouble using the xlrd/xlwt/xlutils family, as they're modules for Python 2.

您可以考虑使用 openpyxl 来处理 Excel 2007 .Python 3 中的 xlsx 文件.

You might consider openpyxl for working with Excel 2007 .xlsx files in Python 3.

如果您只需要移动值(不考虑格式等),这是一种方法.您可以以此为基础:

If you just need to shift values over (disregarding formatting, etc) here's one way to do it. You can build on this:

from openpyxl import load_workbook
from openpyxl.cell import column_index_from_string as col_index
from openpyxl.cell import get_column_letter as col_letter

def del_col(s, col, cmax=None, rmax=None):
    col_num = col_index(col) - 1
    cols = s.columns
    if isinstance(cmax, str):
        cmax = col_index(cmax)
    cmax = cmax or s.get_highest_column()
    rmax = rmax or s.get_highest_row()
    for c in range(col_num, cmax + 1):
        # print("working on column %i" % c)
        for r in range(0, rmax):
            cols[c][r].value = cols[c+1][r].value
    for r in range(0, rmax):
        cols[c+1][r].value = ''

    return s

if __name__ == '__main__':
    wb = load_workbook('input_book.xlsx')
    ws = wb.active
    # or by name: ws = wb['SheetName']
    col = 'D'
    del_col(ws, col)
    wb.save('output_book.xlsx')

这篇关于从 xls 文件中删除列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆