(¿£Áö´Ï¾î¸¦
À§ÇÑ) ÆÄÀ̽㠽ÃÀÛÇϱâ[17]
³»¿ë : xlwings Ãâ·Â ¾ç½Ä ±â´É ¸ðÀ½
ÂüÁ¶ :
xlwings
°ø½Ä ȨÆäÀÌÁö : https://www.xlwings.org/
0.½ÃÀÛÇϸç
pythonÀ¸·Î ¿¢¼¿À» ÅëÁ¦ÇÒ
¼ö ÀÖ´Â ¸ðµâµéÀº ¸¹´Ù. ¸ðµâ¸¶´Ù Ư¼ºÀÌ Á» ´Ù¸£´Ù. openpyxlÀÇ °æ¿ì ÄÄÇ»ÅÍ¿¡ ¿¢¼¿ÀÌ ±ò·ÁÀÖÁö ¾Ê¾Æµµ µ¿ÀÛÇÑ´Ù. ¿¢¼¿ÆÄÀÏÀ» ÀÐ°í ¾µ ¼ö
ÀÖ´Ù. ±×·¡¼ À¥È¯°æ(À¥¼¹ö)¿¡¼µµ pythonÀ¸·Î ¿¢¼¿ ÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ´Ù. xlwings´Â ¿¢¼¿ÀÌ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. xlwings´Â
¿¢¼¿ ÇÁ·Î±×·¥°ú ¿¬µ¿ÇÏ´Â ÇüÅ´Ù. ±×·¡¼ ¿¢¼¿ÀÌ Áö¿øÇÏ´Â ´Ù¾çÇÑ ±â´ÉµéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿À´Ã »ìÆìº¼ ±â´ÉµéÀº xlwings·Î ¼¿ º´ÇÕÇϱâ,
ÆùÆ® ¹× ÆùƮũ±â ¼³Á¤Çϱâ, ¼±±×¸®±â, ¼¿ »ö»ó ä¿ì±â µîÀÌ´Ù.
1. ¼¿º´ÇÕ (merge)
±¹³» ¿£Áö´Ï¾î¸µ ¾÷°è¿¡¼ ¿¢¼¿À»
°è»ê¼ ÀÛ¼º¿ëÀ¸·Î ¸¹ÀÌ ¾´´Ù. ¿¢¼¿Àº ¼¿´ÜÀ§·Î ¼ö½ÄÀ» ÀÔ·ÂÇÏ°Ô µÇ¾îÀÖ¾î¼ Ä÷³ÀÌ ¸ðµÎ ÀÏ·üÀûÀ̾î¾ß ÇÑ´Ù. ÇÏÁö¸¸ ¹®¼¸¦ ÀÛ¼ºÇÏ´Ùº¸¸é Ä÷³À» ¸ðµÎ
ÀÏ·üÀûÀ¸·Î ¸ÂÃâ ¼ö´Â ¾ø´Ù. ±×·¡¼ Ä÷³ ÆøÀ» ÁÙÀÌ°í ¼¿À» mergeÇØ¼ ¾²´Â ¹æ¹ýÀ» ã¾Æ³Â´Ù. ÇÊÀÚ´Â °³ÀÎÀûÀ¸·Î ÀÌ ¹æ¹ýÀ» ÁÁ¾ÆÇÏÁö´Â ¾Ê´Â´Ù.
¼¿µéÀ» º¹»ç³ª º¯°æÀ» ÇÏ·Á¸é º´ÇÕ µÇ¾îÀÖ´Â ¼¿µéÀÌ ¸»½éÀ» ºÎ¸®±â ¶§¹®ÀÌ´Ù. ¾Æ·¡ÀÇ ÄÚµå´Â C4:E4ÀÇ ¼¼°³ ¼¿À» º´ÇÕÇÏ´Â ÄÚµå´Ù.
import xlwings as xw
wsout = xw.sheets.active
wsout.range((4,3), (4, 5)).merge()
|

range(¡°C4:E4¡±)¶ó°í
ÇØµµ °á°ú´Â °°´Ù. ÇÏÁö¸¸ º´ÇÕÇÒ °÷µéÀÌ ¸¹´Ù¸é ¼¿ ÁÖ¼Ò¸¦ º¯¼ö·Î ó¸®Çؼ ¹Ýº¹¹®À» µ¹·Á¾ß ÇÒ ¶§µµ ÀÖÀ» °ÍÀÌ´Ù. Çà°ú ¿À» ¼ýÀڷΠǥÇöÇÏ´Â °ÍÀÌ
ÆíÇÒ °ÍÀÌ´Ù. ±×·± °æ¿ì¿¡´Â ÀÌ·± ½ÄÀ¸·Î range¸¦ Á¤ÇØÁÙ ¼ö ÀÖ´Ù. range((r,c),(r,c))¾ÕÀÇ (r,c)°¡ ½ÃÀÛ¼¿, µÚÀÇ
(r,c)°¡ ³¡ ¼¿À» ¶æÇÑ´Ù.
2. ÅØ½ºÆ® ½ºÅ¸ÀÏ ¹× Å©±â ¼³Á¤
ÅØ½ºÆ® ÆùÆ®¸¦
¼±ÅÃÇÒ ¶§´Â range¸¦ ¼±ÅÃÇϰí font.nameÀ» Á¤ÇØÁÖ¸é µÈ´Ù. Å©±â´Â font.size·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. A1:Z200 ¹üÀ§¸¦ ¸ðµÎ ±¼¸²Ã¼ÀÇ
9 point·Î ¼³Á¤Çϰí A2´Â º¼µå¿Í ºÓÀº »öÀ» Àû¿ëÇß´Ù.
wsout.range("A1:Z200").font.name = "±¼¸²Ã¼"
wsout.range("A1:Z200").font.size = 9
wsout.range("A2").font.bold = True
wsout.range("A2").font.color
= (255,0,0)
|

ÅØ½ºÆ®ÀÇ ÀϺκп¡¸¸ bold,
»ö»ó µîÀ» Àû¿ëÇÏ·Á¸é characters ¼Ó¼ºÀ» ÀÌ¿ëÇØ¼ ¿øÇÏ´Â ±ÛÀÚµéÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¾Æ·¡ ÄÚµå´Â ¡°´Ü¸éÁ¦¿ø¡±¸¸ ºÓÀº »öÀ¸·Î º¯°æÇÏ´Â ÄÚµå´Ù.
wsout.range("B2").characters[3:7].font.color = (255,0,0)
|

3. ÅØ½ºÆ® Á¤·Ä.
ÅØ½ºÆ® Á¤·Ä¹æ¹ýÀ» Á¤ÇØÁÙ ¶§´Â
range¸¦ ¼±ÅÃÇϰí .api.HorizontalAlignment = -4131°ú °°ÀÌ ½áÁÖ¸é µÈ´Ù. -4131Àº ¿ÞÂÊ Á¤·ÄÀ» ¶æÇÑ´Ù.
wsout.range("C4:E4").api.HorizontalAlignment
= -4131
|
¡Ü
Center-aligned : -4108
¡Ü
Right-aligned : -4152
¡Ü
Left-aligned : -4131

À§´Â C4:E4¸¦ °¡¿îµ¥ Á¤·Ä·Î
ó¸®ÇÑ °á°ú´Ù. ±×·¸´Ù¸é º´ÇÕµÈ ¼¿µéÀ» C4:E4·Î ²À ÁöÁ¤ÇØÁà¾ß ÇÒ±î? ¾Æ´Ï¸é C4¸¸ ÁöÁ¤ÇØÁÖ¸é µÉ±î? º´ÇÕµÈ C4:E4Áß C4¿¡¸¸ ¿ÞÂÊ Á¤·ÄÀ»
Àû¿ëÇØº¸ÀÚ. ¿ÞÂÊ Á¤·ÄÀÌ Àß Àû¿ëµÈ´Ù. D4³ª D5¸¦ ÁöÁ¤Çصµ º´ÇÕµÈ ¼¿¿¡ ¿ÞÂÊÁ¤·ÄÀÌ Àß Àû¿ëµÈ´Ù.
wsout.range("C4").api.HorizontalAlignment
= -4131
|

±×·±µ¥ °¡¿îµ¥ Á¤·ÄÀº
-4108À̶ó´Â ¼ýÀÚ¸¦ ¿Ü¿ì±â ºÒÆíÇÏ´Ù. ±×·¡¼ xlwings¿¡¼´Â constants.py¿¡ »ó¼öµéÀ» Á¤ÀÇÇØ³ù´Ù.
URL https://github.com/xlwings/xlwings/blob/main/xlwings/constants.py¿¡ Á¢¼ÓÇØº¸¸é »ó¼öµéÀÌ Á¤ÀǵǾî ÀÖ´Â °ÍÀ» È®ÀÎÇÒ¼ö ÀÖ´Ù. ¿©±â¼
-4108À» °Ë»öÇØº¸ÀÚ. ¾Æ·¡¿Í °°ÀÌ ÁöÁ¤µÇ¾îÀÖ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÀÌÁ¦ -4108 ´ë½Å xlCenter¶ó°í ¾²¸é µÈ´Ù. ´ë½Å ÀÌ »ó¼ö¸¦
¾²·Á¸é ¾Õ¿¡ xw.constants.Constants.xlCenter¿Í °°ÀÌ xw.constants.Constants¸¦ ºÙ¿© Áà¾ß ÇÑ´Ù.

wsout.range("C4").api.HorizontalAlignment
= xw.constants.Constants.xlCenter
|
4. Å׵θ® ±×¸®±â(border)
¿¢¼¿À» ¾²´Â ÀÌÀ¯ Áß Çϳª°¡ Å׵θ®
±×¸®±â°¡ ½±´Ù´Â °ÍÀÌ´Ù. ¾Õ¿¡¼ ¾ð±ÞÇßµíÀÌ ¼¿º´ÇÕÀ» Çϰí Å׵θ®¸¦ ±×¸®¸é ¿øÇÏ´Â Å×À̺íÀ» ¸¸µé ¼ö ÀÖ´Ù. Å׵θ®´Â ¾Æ·¡¿Í °°ÀÌ range¸¦ ¼±ÅÃÇϰí
À§Ä¡¸¦ ÁöÁ¤ÇÏ°í µÎ²²¸¦ ÁÖ´Â ¹æ½ÄÀ¸·Î ±×¸°´Ù. range.api.Borders(À§Ä¡) = µÎ²²
constants.py¿¡´Â
¾Æ·¡¿Í °°ÀÌ Á¤ÀÇ µÇ¾îÀÖ´Ù. ¼±µÎ²²´Â 1,-4138,4,2¸¦ ¾µ ¼ö ÀÖ´Â°í ¿ª½Ã constants.py¿¡ ½±°Ô ±â¾ïÇÒ ¼ö ÀÖ°Ô Á¤ÀÇ µÇ¾îÀÖ´Ù.
class BordersIndex:
xlDiagonalDown = 5 # from enum
XlBordersIndex
xlDiagonalUp = 6 # from enum
XlBordersIndex
xlEdgeBottom = 9 # from enum
XlBordersIndex
xlEdgeLeft = 7 # from enum
XlBordersIndex
xlEdgeRight = 10 # from enum
XlBordersIndex
xlEdgeTop = 8 # from enum
XlBordersIndex
xlInsideHorizontal = 12 # from enum
XlBordersIndex
xlInsideVertical = 11 # from enum
XlBordersIndex
class BorderWeight:
xlHairline = 1 # from enum
XlBorderWeight
xlMedium = -4138 # from enum
XlBorderWeight
xlThick = 4 # from enum
XlBorderWeight
xlThin = 2 # from enum
XlBorderWeight
|
¾Æ·¡´Â C4:X5 ¿µ¿ªÀ» ¼±ÅÃÇØ¼ ¹Ù±ùÂÊ ¼±Àº µÎ²¨¿î 4, ¾ÈÂÊ ¼±Àº ¾ãÀº 2·Î ¼³Á¤Çؼ Å׵θ®¸¦ ±×¸®´Â ÄÚµå´Ù.
bordertop µîÀÇ º¯¼ö´Â Äڵ尡 ³Ê¹« ±æ¾îÁö´Â °ÍÀ» ¸·±â À§ÇØ Á¤ÀÇÇÑ °ÍÀÌ´Ù.
bordertop
= xw.constants.BordersIndex.xlEdgeTop
borderbottom
= xw.constants.BordersIndex.xlEdgeBottom
borderleft
= xw.constants.BordersIndex.xlEdgeLeft
borderright
= xw.constants.BordersIndex.xlEdgeRight
borderinsideH =
xw.constants.BordersIndex.xlInsideHorizontal
borderinsideV
= xw.constants.BordersIndex.xlInsideVertical
wsout.range("C4:X5").api.Borders(bordertop).Weight
= 4
wsout.range("C4:X5").api.Borders(borderbottom).Weight = 4
wsout.range("C4:X5").api.Borders(borderleft).Weight = 4
wsout.range("C4:X5").api.Borders(borderright).Weight = 4 wsout.range("C4:X5").api.Borders(borderinsideH).Weight = 2 wsout.range("C4:X5").api.Borders(borderinsideV).Weight = 2
|
5. ¼¿ »ö ä¿ì±â
¼¿À» ä¿ì·Á¸é ¾Æ·¡¿Í °°ÀÌ range¸¦ ¼±ÅÃÇϰí color¸¦ ÁöÁ¤ÇØÁØ´Ù. color´Â (R,G,B)·Î Ç¥ÇöÇÑ´Ù.
Çϴûö(cyan)Àº (0,255,255), ³ë¶õ»öÀº (255,255,0)ÀÌ´Ù. RGB color·Î °Ë»öÇÏ¸é ¿øÇÏ´Â »öÀÇ RGB°ªÀ» ½±°Ô ¾Ë ¼ö
ÀÖ´Ù.
wsout.range("C4:X4").color
= (0,255,255)
|

-³¡-