Я пытаюсь изменить некоторые новые значения в существующем файле xlsm
с некоторой помощью pandas dataframe
и tuple
variable
Итак, я заметил, что библиотека openpyxl
может изменить книгу xlsm
, из моего предыдущего вопроса , как обновить существующий лист xlsm с помощью макросов, используя pandas, openpyxl, xlwings без потери макросов
В соответствии с этим вопросом Как писать в xlsm с использованием openpyxl , я попытался создать этот код так, чтобы таким образом изменить нужные мне данные через tuple.value.index
.
# This is my directory
mydir = (os.getcwd()).replace('\\', '/') + '/'
#This is my xlsm file
gov_wb = load_workbook(filename=r'' + mydir + 'Governance_Tracker - Copy
- Copy.xlsm', read_only=False, keep_vba=True)
#This is sheet I want to modify
gov_trcker = gov_wb['Gov_Tracker']
gov_trcker.cell(row=values.index("%s"), column=31).value =
'ExampleExampleExampleExample'
gov_wb.save('outfile.xlsm')
но я нахожу эту ошибку
Traceback (most recent call last):
File "C:/Users/mwx707566/PycharmProjects/MyRobotAutomate/MyRobotFunc.py",
line 115, in <module>
gov_trcker.cell(row=values.index("%s"), column=31).value = 'dsfgdsgvdf'
ValueError: tuple.index(x): x not in tuple
Любая идея, как изменить существующий файл xlsm
, не теряя макросы, примерно так
Примечание: любые кусочки информации в моем предыдущем вопросе
как обновить существующий лист xlsm с помощью макросов, используя pandas, openpyxl, xlwings без потери макросов
Редактировать
Кроме того, мне нравится этот sheet cell object
документ. https://pythonhosted.org/xlrd3/cell.html, но все еще не нашли def
берет tuple
любое предложение?
Отредактировано 2
В соответствии со сценарием Muhammad Adeel
я следую его сценарию в зависимости от своих потребностей, и вот мой код
import sys
import xlrd
import unicodedata
import base64
import decimal
import glob
import csv
import xlwt
import os
import xlutils
from xlutils.copy import copy as xl_copy
reload(sys)
mydir = (os.getcwd()).replace('\\', '/') + '/'
myPath = mydir + 'Governance_Tracker - Copy - Copy.xlsm'
if not os.path.exists(myPath):
gov_wb = xlwt.Workbook(encoding='ascii')
else:
upd_b = xlrd.open_workbook(myPath)
gov_wb = xl_copy(upd_b)
sheets = upd_b.sheets()
last_sheet_index = len(sheets)
xl_sheet = upd_b.sheet_by_index(last_sheet_index - 1)
print ('Sheet name: %s' % xl_sheet.name)
for i in range(1, xl_sheet.nrows):
previous_day_data.append(xl_sheet.row(i))
sheet_names = []
for x in sheets:
sheet_names.append(x.name)
if new_worksheet_name in sheet_names:
print 'THE SHEET ALREADY PRESENT WITH THE SAME DATE.. KINDLY DELETE
THAT'
return
worksheet = gov_wb.add_sheet(new_worksheet_name)
rowHeaders = [
"#", "Site Name", "Region", "Site Type", "SiteCode", "TAC Name",
"DT\nReadiness", "RFS Date", "RFS"
, "Huawei 1st submission date ", "TE 1st Response date ", "Huawei 2nd
submission date ", "TE 2nd Response date ",
"Huawei 3rd submission date ", "TE 3rd Response date ", "Acceptance
Date(Optimization)", "Acceptance Date(Planning)", "signed sites",
"As Built Date", "AS built status", "Date DT", "DT Status", "SHR Status",
"DT Planned", "Integeration Status", "Comments/snags",
"Cluster name", "Type(Standalone/colocated)", "Installed type
(Standalone/colocated)", " Status ", "Pending ", "Pending Status",
"problematic details", "ETS TAC \n", "Region", "SF6\n Signed date", "SF6\n
Signed Comment", " Comment History",
"On air Owner", "PP \nOwner", "Report \nComment", "HU Opt.\nArea Owner",
"Planning Owner", "PO Number", "Trigger date ",
"As built status", "R", "T"
]
gov_tracker = gov_wb.get_sheet(0)
trend = gov_wb.get_sheet(2)
shee_planning = gov_wb.get_sheet(3)
all = gov_wb.get_sheet(4)
data = gov_wb.get_sheet(5)
sheet5 = gov_wb.get_sheet(6)
charts = gov_wb.get_sheet(7)
ssv_progress_tracker = gov_wb.get_sheet(8)
shrs_tracker_te_huawei = gov_wb.get_sheet(9)
global row
for index, value in enumerate(rowHeaders):
worksheet.write(row, index, value)
for index, value in enumerate(alp_total_rowValues): # populate other
excel sheets
gov_tracker.write(row, index, value)
gov_wb.save(mydir)
Это мой код после выполнения скрипта Mohammed Adeel
в соответствии с моими потребностями, но я застрял с previous_day_data
, new_worksheet_name
и alp_total_rowValues
, как я могу использовать эти объекты в соответствии с моими потребностями
Есть идеи здесь?
Кто-нибудь может мне здесь помочь?