python 向excel表中添加新的sheet页或者向旧sheet中写入数据

这篇具有很好参考价值的文章主要介绍了python 向excel表中添加新的sheet页或者向旧sheet中写入数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用xlwt库来处理,只不过限制了每个sheet最多放5w行数据
import xlwt
import xlrd
from xlutils.copy import copy
import os
import numpy as np
import pandas as pd
class Excel_Add_Sheet():

    def save_table(self, table, file_name):
        # 保存表
        table.save(file_name)

    def add_new_sheet(self, file_name, sheet_name, title=None):
        """ 创建新的文件或者创建新的表
        :param file_name: 文件名
        :param sheet_name: 表名,不存在则创建
        :param title: 表不存在时则写入标题
        :return:
        """
        if not os.path.exists(file_name):
            table = xlwt.Workbook(encoding='utf-8')
            wbsheet = table.add_sheet(sheet_name, cell_overwrite_ok=True)
            if title:
                for i in range(0, len(title)):
                    wbsheet.write(0, i, title[i])
            sheet_names = []
            row = 1
        else:
            # 打开需要操作的excel表
            wb = xlrd.open_workbook(file_name)
            sheet_names = wb.sheet_names()
            table = copy(wb)
            if sheet_name not in sheet_names:
                wbsheet = table.add_sheet(sheet_name)
                if title:
                    for i in range(0, len(title)):
                        wbsheet.write(0, i, title[i])
                row = 1
            else:
                wbsheet = table.get_sheet(sheet_name)
                row = len(wbsheet.rows)
        return table, sheet_names, wbsheet, row

    def add_data_test(self):
        # 测试
        file_name = 'test.xlsx'
        sheet_name = 'sheet1'
        title = ['a', 'b', 'c']
        table, sheet_names, wbsheet, row = self.add_new_sheet(file_name, sheet_name, title)
        # 向新sheet中写入数据。
        num = [[i for i in range(1, 4)], [j for j in range(4, 7)]]
        data = np.array(num)
        pd_data = pd.DataFrame(data=data, index=['A', 'B'], columns=['C', 'D', 'E'])
        for i in range(pd_data.shape[0]):
            wbsheet.write(row + i, 0, int(pd_data.iloc[i, 0]))
            for j in range(1, pd_data.shape[1]):
                wbsheet.write(row + i, j, int(pd_data.iloc[i, j]))
        self.save_table(table, file_name)

    def add_data(self, file_name, title=None, datas=None, sheet_name=None):
        """
        :param file_name: 文件名
        :param title: sheet表标题
        :param datas: 列表数据格式[[1,2,3],[4,5,6]]
        :param sheet_name: sheet表名
        """
        table, sheet_names, wbsheet, row = self.add_new_sheet(file_name, sheet_name, title)
        # 向新sheet中写入数据。
        for i in range(len(datas)):
            wbsheet.write(row + i, 0, datas[i][0])
            for j in range(1, len(datas[i])):
                wbsheet.write(row + i, j, datas[i][j])
        self.save_table(table, file_name)


if __name__ == '__main__':
    start = Excel_Add_Sheet()
    # start.add_data_test()
    save_excel_path = './test.xlsx'
    title = ['a', 'b', 'c']
    lists = [[1, 2, 3], [4, 5, 6]]
    start.add_data(save_excel_path, title, lists, '表名')
#用openpyxl库,能处理的最大行数达到1048576,不支持xls格式,xlrd支持xls格式
#openpyxl 可以写入xls格式表中,无法新增数据
import openpyxl
from openpyxl.styles import Alignment

class Openpyxl_Excel():

    def save_table(self, table, file_name):
        # 保存表
        table.save(file_name)

    def openpyxl_add(self, filepath=None, sheet_name=None, title=None,index=0):
        """
        :param filepath: excel路径
        :param sheet_name: 工作表名
        :param title: 标题
        :param index: 工作表的位置索引
        """
        if os.path.exists(filepath):
            workbook = openpyxl.load_workbook(filepath)
            sheet_names = workbook.sheetnames
            if sheet_name in sheet_names:
                wbsheet = workbook.get_sheet_by_name(sheet_name)
            else:
                wbsheet = workbook.create_sheet(title=sheet_name, index=0)

            max_row = wbsheet.max_row + 1
            if title:
                for i in range(0, len(title)):
                    wbsheet.cell(1, i + 1).value = title[i]
                    wbsheet.cell(1, i + 1).alignment = Alignment(horizontal='center', vertical='center')  # 居中对齐
        else:
            workbook = openpyxl.Workbook()
            # 删除默认表Sheet, 创建指定表名
            if 'Sheet' in workbook.sheetnames and sheet_name != 'Sheet':
                del workbook["Sheet"]
                wbsheet = workbook.create_sheet(title=sheet_name, index=0)
            else:
                wbsheet = workbook.get_sheet_by_name(sheet_name)
            sheet_names = [sheet_name]
            if title:
                for i in range(0, len(title)):
                    wbsheet.cell(1, i+1).value = title[i]
                    wbsheet.cell(1, i + 1).alignment = Alignment(horizontal='center', vertical='center')  # 居中对齐
            max_row = 2
        return workbook, sheet_names, wbsheet, max_row

    def add_data(self, file_name, title=None, datas=None, sheet_name=None):
        """
        :param file_name: 文件名
        :param title: sheet表标题 [title1, title2, title3]
        :param datas: 列表数据[[1,2,3],[4,5,6]]
        :param sheet_name: sheet表名
        """
        table, sheet_names, wbsheet, row = self.openpyxl_add(file_name, sheet_name, title)
        # 循环写入数据,居中对齐
        # datas = [[1, 2, 3], [1, 2, 3]]
        for i in range(len(datas)):
            for j in range(len(datas[i])):
                wbsheet.cell(row + i, j + 1).value = datas[i][j]  # 写入数据
                wbsheet.cell(row + i, j + 1).alignment = Alignment(horizontal='center', vertical='center')  # 居中对齐
        # 保存文件
        self.save_table(table, file_name)

if __name__ == '__main__':
    start = Openpyxl_Excel()
    file_name = './test.xlsx'
    sheet_name = 'Sheet'
    title = ['title1', 'title2', 'title3']
    datas = [[1, 2, 3], [4, 5, 6]]
    start.add_data(file_name, title, datas, sheet_name)

文章来源地址https://www.toymoban.com/news/detail-489420.html

到了这里,关于python 向excel表中添加新的sheet页或者向旧sheet中写入数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】excel多个sheet数据合并实例

    因为,每天都会有的大量excel报表汇总处理任务,所以写了一个脚本来处理。 就是找出每一个excel中特定的sheet,把这些sheet的特定列读取出来合并到一个sheet中。 因为每一个sheet的数据都不太一样,所以稍微麻烦一点,下面使用openpyxl方式和pandas两种方式来处理。 使用openpyx

    2024年02月02日
    浏览(37)
  • Python合并EXCEL数据(按行、按列、按sheet)

    1.按行合并多个excel文件 2.按列合并多个excel文件(多个excel文件行数需一致) 改进版:把需要合并的excel表格放在一个文件夹,运行代码把该文件夹中的表格合并 这个代码直接粘过去用就行,改绿色的部分即可,注意要把文件都放一个文件夹里。 3.按sheet合并,把一个文件里

    2024年02月15日
    浏览(33)
  • [python]问题:pandas处理excel里的多个sheet

    Pandas 可以很容易地处理 Excel 文件中的多个工作表。首先,你需要安装 pandas 和 openpyxl(用于读取 .xlsx 文件)库。你可以使用以下命令安装这两个库: 接下来,你可以使用以下代码来处理 Excel 文件中的多个工作表:

    2024年02月10日
    浏览(42)
  • Python批处理excel文件多个sheet汇总脚本

    假设有10个excle表,每个excel包含sheet1,sheet2,sheet3,sheet4,每个excel中sheet1的列名是一样的,sheet2的列名是一样的,现在要做的是将这10个excel中的sheet1合并汇总,sheet2合并汇总,将汇总后的sheet1和sheet2放在汇总表.xlsx里面,补充条件:每个excel的sheet1名字和汇总表的sheet1名字一样,

    2024年02月03日
    浏览(46)
  • Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。

    小屌丝 :鱼哥,我想请教一个问题。 小鱼 :国庆假期你经历了什么,让你变得如此的 “ 善良 ”? 小屌丝 :别这么说,我一直很善良,至少,很正直… 小鱼 :打住,直接点, 你有什么需要帮助的? 小屌丝 :我就是想把查询的结果也入到excel表中 小鱼 :然后呢? 小屌丝 :

    2024年02月08日
    浏览(46)
  • 4种方法用Python批量实现多Excel多Sheet合并

    目录 方法一:使用pandas库 方法二:使用openpyxl库 方法三:使用xlrd和xlwt库 方法四:使用os和glob库 在数据处理中,经常需要将多个Excel文件中的多个工作表进行合并。以下介绍了4种方法,使用Python批量实现多Excel多Sheet的合并。 Pandas是Python中常用的数据处理库,提供了简便的

    2024年01月19日
    浏览(42)
  • Python pandas在原有Excel中追加或重写sheet工作表

    想在excel中添加几个工作表来保存python得到的同一类型的多个阶段数据变量,非一次性保存,且是多次打开那种方式。 使用xlwt会覆盖掉以前的所有数据(且是通过遍历保存),看了好多帖子发现pandas可以实现我想要的功能,但是没有很直接的方法可以直接使用,且依然会覆盖

    2024年02月12日
    浏览(29)
  • python pandas 获取Excel文件下所有的sheet名称,表格数据

    方法1: 一定要加sheet_name=None,才能读取出所有的sheet,否则默认读取第一个sheet,且获取到的keys是第一行的值 方法2:

    2024年02月13日
    浏览(37)
  • Python实现Excel中的sheet复制(可跨文件操作、可保留原格式)

    使用说明: src_xlsx 源Excel文件 ssheetname 源Excel文件中需要复制的sheet dst_xlsx 目标Excel文件 nsheetname 目标Excel文件中复制后的sheet 注意: 上述函数只能复制内容,不能保留Excel中的格式,例如字体、背景色等。如果有需要保留原格式,请使用下面下一个函数。 代码解析: 该方法

    2024年02月03日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包