python Excel处理之sheet1提取信息到sheet2

# -*- coding: UTF-8 -*-
# import docx
import openpyxl
# from openpyxl import Workbook
# from openpyxl.styles import PatternFill, Border, Side, Font, Alignment
# from docx import Document
# import re


# ------------------------------------------------------------------------------
def is_chinese(string):
    """
    检查整个字符串是否包含中文
    :param string: 需要检查的字符串
    :return: bool
    """
    for ch in string:
        if u'\u4e00' <= ch <= u'\u9fff':
            return True

    return False


# ------------------------------------------------------------------------------创建打开excel文档
type_name = 'test'
file_name_rd = type_name+'.xlsx'
wb = openpyxl.load_workbook(file_name_rd)
# 获取所有工作表名
names = wb.sheetnames
# wb.get_sheet_by_name(name) 已经废弃,使用wb[name] 获取指定工作表
sheet1 = wb[names[0]]
sheet2 = wb[names[1]]
sheet3 = wb[names[2]]
maxRow1 = sheet1.max_row
x = 0
str1 = []
str2 = []
indexStrm = ''

for row in sheet2['A0:M200']:
    for cell in row:
        cell.value = ''
# -------------------------------------------------------------------------------
for i in range(1, maxRow1+1, 1):
    j = 0
    for j in range(1, i, 1):
        if sheet1.cell(i, 2).value == sheet1.cell(j, 2).value:
            sheet1.cell(i, 1).value = '----'
            break
    text_tem0 = str(sheet1.cell(i, 1).value)
    if 'None' != text_tem0 and '' != text_tem0 and not ('-' in text_tem0):
        x += 1
        strtemp = sheet1.cell(i, 1).value
        strtemp = strtemp.replace('H', '')
        strtemp = '0x' + strtemp
        sheet2.cell(x, 1).value = strtemp
        sheet2.cell(x, 2).value = sheet1.cell(i, 2).value
        j = 3
        j1 = 3
        while j < 11:
            strtemp = str(sheet1.cell(i, j1).value)
            if is_chinese(strtemp):
                break
            else:
                if not('[' in strtemp):
                    if '/' in strtemp:
                        strtemp = strtemp.replace('/', '')
                    sheet2.cell(x, j).value = strtemp
                    j += 1
                else:
                    str1 = strtemp.split('[', 1)
                    strm = str1[0]
                    indexstrm = str1[1]
                    indexstrm = indexstrm.replace('[', '')  #
                    indexstrm = indexstrm.replace(']', '')  # 去括号
                    str2 = indexstrm.split(':', 1)
                    print(str2)
                    indexNum0 = int(str2[0])
                    indexNum1 = int(str2[1])
                    for k in range(0, indexNum0-indexNum1+1, 1):
                        sheet2.cell(x, j).value = strm + str(indexNum0-k)
                        testtemp = str(sheet2.cell(x, j).value)
                        j += 1

                j1 += 1

wb.save(file_name_rd)
print('OVER1')

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提取多个Excel文件中的某一个Sheet并汇总,可以使用Python中的pandas库来实现。 首先,需要导入pandas库和os库,以及设置要提取Sheet名称和Excel文件的路径。 ```python import pandas as pd import os sheet_name = "Sheet1" # 要提取Sheet名称 excel_path = "路径/到/你的/Excel文件夹" # Excel文件夹的路径 ``` 接下来,可以使用os库的walk函数遍历指定路径下的所有文件,并使用pandas的read_excel函数读取Excel文件的指定Sheet。 ```python dataframe_list = [] # 存储提取的数据的列表 for dirpath, _, filenames in os.walk(excel_path): for filename in filenames: if filename.endswith(".xlsx") or filename.endswith(".xls"): # 判断文件是否为Excel文件 file_path = os.path.join(dirpath, filename) df = pd.read_excel(file_path, sheet_name=sheet_name) dataframe_list.append(df) ``` 最后,使用pandas的concat函数将所有提取的数据进行合并和汇总。 ```python merged_dataframe = pd.concat(dataframe_list) ``` 完整的代码如下: ```python import pandas as pd import os sheet_name = "Sheet1" # 要提取Sheet名称 excel_path = "路径/到/你的/Excel文件夹" # Excel文件夹的路径 dataframe_list = [] # 存储提取的数据的列表 for dirpath, _, filenames in os.walk(excel_path): for filename in filenames: if filename.endswith(".xlsx") or filename.endswith(".xls"): # 判断文件是否为Excel文件 file_path = os.path.join(dirpath, filename) df = pd.read_excel(file_path, sheet_name=sheet_name) dataframe_list.append(df) merged_dataframe = pd.concat(dataframe_list) ``` 这样,就可以将多个Excel文件中的某一Sheet提取出来并汇总在一个DataFrame中了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值