python 將表格多個列數據放到同一個單元格中


 
表格模板:

目的將卡片1到卡片5的所有數據組合起來到一個單元格中如下入F列中(工作中為了避免手動復制粘貼),其余不變,因為數據太多 自己一個一個復制工作效率太低,所以寫這個腳本是為了方便自己
有需要的也可進行修改后使用。
運行結果如下:

反過來 以“;”分隔上圖F列 結果顯示為 卡片1 卡片2 卡片3 的結果
def readExcelDataByName(filename, sheetName): '''讀取Excel文件和表名''' wb = xlrd.open_workbook(filename) # sheet=data.sheet_by_index(0)#通過索引順序獲取,0表示第一張表 # sheets = data.sheet_names()#獲取文件中的表名 sheet = wb.sheet_by_name(sheetName) ncols = sheet.ncols # 獲取行數 nrows = sheet.nrows print("nrows %d, ncols %d" % (nrows, ncols)) row_list = [] work_book = xlwt.Workbook("11.xls") sheet1 = work_book.add_sheet("Sheet1") k = 1 for j in range(1, nrows): # 獲取單元格 for i in range(6, ncols): data = sheet.cell_value(j, i) if data == "": continue else: row_list.append(str(k) + "." + data + "\n") k = k + 1 # print(row_list) sheet1.write(j, 5, row_list) row_list.clear() k = 1 for m in range(0,7): for n in range(0,5):#列 data=sheet.cell_value(m, n) sheet1.write(m, n, data) if os.path.exists("11.xls"): os.remove("11.xls") work_book.save("11.xls") else: work_book.save("11.xls") if __name__ == '__main__': readExcelDataByName('模板.xlsx', 'Sheet1')



  

#!user/bin/env python
# coding=utf-8
# @Author  : Dang
# @Time    : 2018/5/22 17:25
# @Email   : 1370465454@qq.com
# @File    : Test_SplitExcel.py
# @Description:對excel單元格已;進行分隔,完成后需要對
import xlrd
import xlwt
import os
import re


def readExcelDataByName(filename, sheetName, num,save_filename):
    """
        :param filename:輸入文件路徑和名字+后綴
        :param sheetName:輸入表名
        :param num:輸入要分隔的列
        :param save_filename:要保存的文件名稱
    """
   
    wb = xlrd.open_workbook(filename)
    # sheet=data.sheet_by_index(0)#通過索引順序獲取,0表示第一張表
    # sheets = data.sheet_names()#獲取文件中的表名
    sheet = wb.sheet_by_name(sheetName)
    ncols = sheet.ncols
    # print(ncols)
    # 獲取行數
    nrows = sheet.nrows
    print("nrows %d, ncols %d" % (nrows, ncols))
    row_list = []
    work_book = xlwt.Workbook()
    sheet1 = work_book.add_sheet(sheetName[:-1], cell_overwrite_ok=True)
    for m in range(0, nrows):
        for n in range(0, num):  # 列
            data_init = sheet.cell_value(m, n)
            sheet1.write(m, n, data_init)
    k=0
    for m in range(1, nrows):
        data = sheet.cell_value(m, num)
        row_list = re.split("", data.replace("\n", ""))
        for n in range(0, len(row_list)):  # 列
            sheet1.write(m, n + num, row_list[n])  # 從第6列寫入
        k=k+len(row_list)
        # print(m)
        # print(row_list)
        row_list.clear()
    # print(k-nrows)

    print("大約有 %d個用例,此處只做大概統計,具體需要根據實際情況減去相應值" %(k-nrows))

    for i in range(num, ncols):
        data_add = sheet.cell_value(0, i)
        # print(kapian)
        sheet1.write(0, i, data_add)
    if os.path.exists(save_filename + sheetName + ".xls"):
        os.remove(save_filename + sheetName + ".xls")
        work_book.save(save_filename + sheetName + ".xls")
    else:
        work_book.save(save_filename + sheetName + ".xls")
    print("轉換完成,請查看 %s%s.xls的文檔。" %(save_filename,sheetName))
if __name__ == '__main__':
    """
        :param filename:輸入文件路徑和名字+后綴
        :param sheetName:輸入表名
        :param num:輸入要分隔的列
        :param save_filename:要保存的文件路徑和名稱,要保存文件名會和表名自動組合形成新的文件 如:分隔結果文檔Sheet1.xls
    """
    readExcelDataByName('11.xls', 'Sheet1', 6,"結果文檔")

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM