प्रौद्योगिकी साझेदारी

pandas pywin32 excel कार्यालय स्वचालनं संचालितं करोति

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

आयात पाण्डा यथा pd
आयात पुनः
win32com.client इत्येतत् win32 इति आयातयन्तु
win32com.client आयातनित्यतः
आयात os
os.path इत्येतत् osp इति आयातं कुर्वन्तु
 
#पढें तालिका
पथ = ओस.गेटकवड ()
fp=osp.join (पथ, 'बकवास_डेमो.xlsx')
df=pd.read_excel(fp,header=1,usecols=['क्रमाङ्कः','ऑप्टिकलकेबलखण्डस्य नाम (ए-अन्त B)'],nrows=72)#nrows न विस्मरन्तु
df.set_index ('क्रम संख्या',inplace = सत्य) # अनुक्रमणिका सेट करें
 
#दत्तांशं छानतु
df_1=df[~df['ऑप्टिकल केबल खण्डनाम (अंत ए-अंत बी)'].str.contains('JT01')]
df_2 = df [df ['ऑप्टिकल केबल खण्ड नाम (अंत ए-अंत बी)'].str.contains ('JT01')]
 
#सञ्चालन सन्दर्भ df_2 डेटा
reg=re.compile(r'(?<=()(.*?)(?=))')
pf=df_2.प्रतिलिपि ()
pf ['एबी अंत निकालें']=pf['ऑप्टिकल केबल खण्ड नाम (ए-अंत-बी अंत)'].str.extract (reg, expand = False)
pf ['ऑप्टिकल केबल कोर की संख्या']=pf['ऑप्टिकल केबल खण्ड का नाम (अंत ए-अंत बी)'].str.extract(r'(?:.*)(-d+)',expand=False ) ९.
pf = pf.iloc [::-1] # उल्टा क्रम, कुंजी
pf['ऑप्टिकल केबलकोरस्य संख्या'] = pf['ऑप्टिकल केबलकोरस्य संख्या'].replace('-', '', regex=True)#replace
 
 
#दत्तांशसंसाधनम्
ls=[] इति ।
pf.iterrows() इत्यस्मिन् idx,पङ्क्तिः कृते:
strs_2=row['ऑप्टिकल केबल खण्डनाम (अन्त ए-अन्त B)'].
strs_3=row ['AB समाप्त निकालें']।
strs_4=row['ऑप्टिकल केबलकोरस्य संख्या'] ।
यदि strs_3 strs_2 मध्ये:
ls.append ([idx, strs_3, strs_4])
 
 
lg=[]#Storage वर्तमानं द्रव्यं पूर्ववस्तुनः समानं भवति न तु अग्रिमवस्तूनाम्
lf=[]#Storage पूर्वं पश्चात् च द्वौ द्रव्यौ समानौ न स्तः
for i in range(len(ls)): .
यदि ls[i][1]==ls[i-1][1] तथा ls[i][1]!=ls[i+1][1]:
lt=ls[i-1:i+2]।
l1=[]#संख्याः संग्रहयन्तु
l2=[] # AB टर्मिनल संग्रहण
l3=[]#ऑप्टिकल केबलकोरस्य संख्यां संग्रहयन्तु
परिधि(len(lt)) मध्ये j कृते:):
l1.append(lt[j]]) 1.1.
l2.append(lt[j] [1]) 1.1.
l3.append(lt[j][-1]) २.
 
new_l1=[min(l1),max(l1)]#न्यूनतमं अधिकतमं च प्राप्नुवन्तु
new_l1=map(str,new_l1)#सूचीतत्त्वानि स्ट्रिंग्स् मध्ये मैप् भवन्ति
new_l2=सूची (सेट (l2)) + सूची (सेट (l3))
res_1 = '-'.join (new_l1) # क्रम संख्या स्प्लिसिंग
res_2='-'.join(new_l2)#AB समाप्त ऑप्टिकल केबल कोर संख्या स्प्लिसिंग
res_3=सूची ((res_1,res_2)) # सूचीयां परिवर्तयन्तु
lg.append(res_3) 1.1.
उत:
l1=ls[i][0]#संख्याः संग्रहयन्तु
l2=ls[i][1]#भण्डार AB अंत
l3=ls[i][-1]#भण्डारण प्रकाशीयकेबलकोरस्य संख्या
res_4=सूची ((l1,l2,l3))
lf.append(res_4) इति ।
 
 
 
xh=[]#क्रमाङ्कः
अब=[]#अब् अन्त
xs=[]#कोरस्य संख्या
सीमायां k कृते(len(lf)):
l1=lf[k][0]#संख्ययाँ संग्रहण
l2=lf[k][1]#भण्डार AB अंत
l3=lf[k][-1]#भण्डारण प्रकाशीयकेबलकोरस्य संख्या
xh.append(l1) 1.1.
अब्.उपाय(l2) 1.1.
xs.append(l3) 1.1.
 
#युग्मरूपेण पुनः समूहीकरणं कुर्वन्तु
xh=[xh[x:x+2] परिधि(0,len(xh),2)] मध्ये x कृते]।
ab=[ab[x:x+2] परिधि(0,len(ab),2)] मध्ये x कृते।
xs=[xs[x:x+2] परिधि(0,len(xs),2)] मध्ये x कृते]।
 
लम्=[] २.
परिधि(len(xh)) मध्ये n कृते):
l1=सूची ((मिनट (xh [n]), अधिकतम (xh [n])))
new_l1=नक्शा (stri,l1)
l2=सूची (सेट (xs [n]))
ल३=अब्[न]+ल२
 
res_1='-'.join(नव_l1)
res_2='-'.join(l3) 1.1.
lm.append ([ रेस_1, रेस_2])
 
 
finall_list=lg+lm
 
# डुप्लिकेशन हटाओ
finall_ls=[] इति ।
finall_list इत्यस्मिन् l इत्यस्य कृते:
यदि l finall_ls मध्ये नास्ति:
finall_ls.append (l) 1.1.
 
#परिणामसूचिकायाः ​​आधारेण DataFrame पुनः रचयन्तु
df_3=pd.DataFrame(data=final_ls,columns=['क्रमाङ्कः','ऑप्टिकल केबलखण्डस्य नाम (अन्त ए-अन्त बी)'])
df_3.set_index('serial number',drop=True,inplace=True)#क्रमाङ्कस्य स्तम्भं अनुक्रमणिकारूपेण सेट् कुर्वन्तु
 
 
#JT विना ऑप्टिकल केबल खण्डं JT इत्यनेन च संसाधितं खण्डं स्प्लाइस् कुर्वन्तु
cf = pd.concat ([df_1, df_3], अक्ष = 0)
 
 
'''
पुनः अनुक्रमणिकां प्रतिस्थापयितुं, अथवा न प्रतिस्थापयितुं कुशलम् । तथापि रेखासङ्ख्या क्रमाङ्कस्य + २ आधारेण भवति
'''
 
# pywin32एक्सेल तालिका पठन्तु
# excel कार्यक्रम चलाये
प्रयततु:
excel_app = win32.gencache.EnsureDispatch ('एक्सेल.अनुप्रयोग')
विहाय:
प्रयततु:
win32.gencache.EnsureDispatch ('एट.अनुप्रयोग')
विहाय:
win32.gencache.EnsureDispatch ('ket.अनुप्रयोग') 1.1.
अन्ते:
excel_app.दृश्यमानम् = सत्यम्
excel_app.DisplayAlerts = असत्यम्
#सारणीयाः आवश्यकस्तम्भान् पठन्तु
कार्यपुस्तिका = excel_app.कार्यपुस्तकें.Open(fp)
कार्यपत्रक = कार्यपुस्तिका।कार्यपत्रक('सूची')
कार्यपत्रक।स्तम्भ(3).Insert()
कार्यपत्रक।स्तम्भ(4).Insert()
worksheet.Cells (2, 3).Value = 'ड्राइंग संख्या' # स्तम्भनाम सेट् कुर्वन्तु
worksheet.Cells (2, 4).Value = 'पैराग्राफ नाम' # स्तम्भ नाम सेट् करें।
 
#सञ्चालन प्रपत्र
for idx,row in cf.iterrows(): .
dl=row['ऑप्टिकल केबल खण्डनाम (अन्त ए-अन्त B)']।
भ=इड्क्स
यदि '-' in str(bh): .
sb=bh.split('-') २.
start_row = int (min (sb)) + 2 # पङ्क्ति संख्या प्रारम्भ
end_row = int (अधिकतम (sb)) + 2 # समाप्त पंक्ति संख्या
range1_to_merge=worksheet.Range(worksheet.Cells(start_row, 3), worksheet.Cells(end_row, 3))#विलयनीयस्य कोष्ठकस्य "ड्राइंगसङ्ख्या"
range2_to_merge=worksheet.Range(worksheet.Cells(start_row, 4), worksheet.Cells(end_row, 4))#विलयनीयस्य कोष्ठकस्य "पैराग्राफनाम"
range3_to_color=worksheet.Range(worksheet.Cells(start_row, 5), worksheet.Cells(end_row, 5))#रङ्गं सेट् कर्तुं "ऑप्टिकल केबलखण्डनाम (अन्त ए-अन्त B)"
range4_to_color=worksheet.Range(worksheet.Cells(start_row, 17), worksheet.Cells(end_row, 17))#रङ्गं सेट् कर्तुं "क्रमसङ्ख्या + अनुरोधकर्त्ता"
range2_to_merge.WrapText = True # स्वतः रेखाएँ लपेटें
range3_to_color.Interior.Color =7396243 # हल्के लाल भरने रंग 804040
range4_to_color.आन्तरिक.रंग =7396243
#range3_to_merge.Font.Color = 25500 # गहरे लाल पाठ
range1_to_merge.Value=bh # रेखांकन संख्या
range2_to_merge.Value = dl # ऑप्टिकल केबल अनुच्छेद
range1_to_merge.विलय () 1.1.
range2_to_merge.विलय () 1.1.
range2_to_merge.Rows.RowHeight=36
range2_to_merge.स्तंभ.स्तंभ चौड़ाई = 34
उत:
कार्यपत्रक।कोशिका (idx + 2,3).Value = idx
कार्यपत्रक।कोशिका (idx + 2,4).मूल्य = dl
worksheet.Cells (idx + 2,4).WrapText = True # स्वचालित रूप से रेखाओं लपेटें
 
 
#क्रिया समाप्तं कृत्वा प्रपत्रं रक्षन्तु
कार्यपुस्तिका।रक्षतु() .
workbook.Close(SaveChanges=मिथ्या)
excel_app.Quit () ९.