xython 4.3.3__tar.gz → 4.3.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {xython-4.3.3 → xython-4.3.6}/MANIFEST.in +5 -1
- {xython-4.3.3 → xython-4.3.6}/PKG-INFO +11 -1
- {xython-4.3.3 → xython-4.3.6}/README.md +6 -0
- {xython-4.3.3 → xython-4.3.6}/pyproject.toml +11 -8
- {xython-4.3.3 → xython-4.3.6}/src/xython/__init__.py +1 -1
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_color.py +43 -1
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_excel.py +50 -17
- {xython-4.3.3 → xython-4.3.6/src}/xython.egg-info/PKG-INFO +11 -1
- xython-4.3.6/src/xython.egg-info/SOURCES.txt +26 -0
- xython-4.3.6/src/xython.egg-info/top_level.txt +1 -0
- xython-4.3.3/src/setup.py +0 -44
- xython-4.3.3/xython.egg-info/SOURCES.txt +0 -45
- xython-4.3.3/xython.egg-info/top_level.txt +0 -2
- {xython-4.3.3 → xython-4.3.6}/requirements.txt +0 -0
- {xython-4.3.3 → xython-4.3.6}/setup.cfg +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_auto.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_chrome.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_common.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_db.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_edge.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_excel_event.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_hwp.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_list.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_map.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_outlook.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_re.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_time.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_util.py +0 -0
- {xython-4.3.3 → xython-4.3.6}/src/xython/xy_word.py +0 -0
- {xython-4.3.3 → xython-4.3.6/src}/xython.egg-info/dependency_links.txt +0 -0
- {xython-4.3.3 → xython-4.3.6/src}/xython.egg-info/requires.txt +0 -0
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: xython
|
|
3
|
-
Version: 4.3.
|
|
3
|
+
Version: 4.3.6
|
|
4
|
+
Summary: xython package
|
|
4
5
|
Author-email: "SJ.Park" <sjpkorea@naver.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/yourname/xython
|
|
8
|
+
Requires-Python: >=3.8
|
|
5
9
|
Description-Content-Type: text/markdown
|
|
6
10
|
Requires-Dist: korean_lunar_calendar
|
|
7
11
|
Requires-Dist: arrow
|
|
@@ -13,6 +17,10 @@ Requires-Dist: screeninfo
|
|
|
13
17
|
Requires-Dist: pywinauto
|
|
14
18
|
Requires-Dist: psutil
|
|
15
19
|
|
|
20
|
+
# 4.3.6을 기준으로 각 모듈이름을 변경함 (2026-05-10)
|
|
21
|
+
> - 각 모듈의 객체이름은 xy를 붙여서 사용 (예 : xyexcel)<br>
|
|
22
|
+
> - xy_edge를 추가함 : Drissionpage를 사용함<br>
|
|
23
|
+
> - 전체적으로 이름을 변경<br>
|
|
16
24
|
|
|
17
25
|
# 4.0.0을 기준으로 각 모듈이름을 변경함 (2025-03-26)
|
|
18
26
|
> - 쉽게 : **xy_** 접두어로 모든 모듈이름을 변경<br>
|
|
@@ -74,6 +82,8 @@ It can handle for Excel, Hwp, Word, Outlook, Color, Etc by xython**
|
|
|
74
82
|
| 12 | xy_list | New List (start from 1) (**for common use**) |
|
|
75
83
|
| 13 | xy_util | utilities (**for common use**) |
|
|
76
84
|
| 14 | xy_auto | for Keyboard & Mouse control (**for common use**) |
|
|
85
|
+
| 15 | xy_edge | for web control |
|
|
86
|
+
| 16 | xy_chrome | for web control |
|
|
77
87
|
|
|
78
88
|
|
|
79
89
|
## xython 각 모듈의 간략한 설명
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# 4.3.6을 기준으로 각 모듈이름을 변경함 (2026-05-10)
|
|
2
|
+
> - 각 모듈의 객체이름은 xy를 붙여서 사용 (예 : xyexcel)<br>
|
|
3
|
+
> - xy_edge를 추가함 : Drissionpage를 사용함<br>
|
|
4
|
+
> - 전체적으로 이름을 변경<br>
|
|
1
5
|
|
|
2
6
|
# 4.0.0을 기준으로 각 모듈이름을 변경함 (2025-03-26)
|
|
3
7
|
> - 쉽게 : **xy_** 접두어로 모든 모듈이름을 변경<br>
|
|
@@ -59,6 +63,8 @@ It can handle for Excel, Hwp, Word, Outlook, Color, Etc by xython**
|
|
|
59
63
|
| 12 | xy_list | New List (start from 1) (**for common use**) |
|
|
60
64
|
| 13 | xy_util | utilities (**for common use**) |
|
|
61
65
|
| 14 | xy_auto | for Keyboard & Mouse control (**for common use**) |
|
|
66
|
+
| 15 | xy_edge | for web control |
|
|
67
|
+
| 16 | xy_chrome | for web control |
|
|
62
68
|
|
|
63
69
|
|
|
64
70
|
## xython 각 모듈의 간략한 설명
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["setuptools>=61.0"]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "xython"
|
|
7
|
-
version = "4.3.
|
|
7
|
+
version = "4.3.6"
|
|
8
|
+
description = "xython package"
|
|
8
9
|
readme = {file = "README.md", content-type = "text/markdown"}
|
|
10
|
+
requires-python = ">=3.8"
|
|
9
11
|
authors = [
|
|
10
12
|
{name = "SJ.Park", email = "sjpkorea@naver.com"}
|
|
11
13
|
]
|
|
14
|
+
license = {text = "MIT"}
|
|
12
15
|
dependencies = [
|
|
13
16
|
"korean_lunar_calendar",
|
|
14
17
|
"arrow",
|
|
@@ -21,11 +24,11 @@ dependencies = [
|
|
|
21
24
|
"psutil",
|
|
22
25
|
]
|
|
23
26
|
|
|
24
|
-
[
|
|
25
|
-
|
|
26
|
-
package-dir = {"" = "."}
|
|
27
|
+
[project.urls]
|
|
28
|
+
Homepage = "https://github.com/yourname/xython"
|
|
27
29
|
|
|
28
30
|
[tool.setuptools.packages.find]
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
where = ["src"]
|
|
32
|
+
|
|
33
|
+
[tool.setuptools.package-dir]
|
|
34
|
+
"" = "src"
|
|
@@ -931,6 +931,9 @@ class xy_color:
|
|
|
931
931
|
return [result]
|
|
932
932
|
|
|
933
933
|
def hsl_to_rgb(self, input_hsl):
|
|
934
|
+
return self.change_hsl_to_rgb(input_hsl)
|
|
935
|
+
|
|
936
|
+
def change_hsl_to_rgb(self, input_hsl):
|
|
934
937
|
"""
|
|
935
938
|
input_hsl을 rgb로 변경
|
|
936
939
|
|
|
@@ -1103,6 +1106,9 @@ class xy_color:
|
|
|
1103
1106
|
return result
|
|
1104
1107
|
|
|
1105
1108
|
def hsl_to_rgbint(self, input_hsl):
|
|
1109
|
+
return self.change_hsl_to_rgbint(input_hsl)
|
|
1110
|
+
|
|
1111
|
+
def change_hsl_to_rgbint(self, input_hsl):
|
|
1106
1112
|
"""
|
|
1107
1113
|
변경 : hsl -> rgbint
|
|
1108
1114
|
|
|
@@ -1204,6 +1210,9 @@ class xy_color:
|
|
|
1204
1210
|
return result
|
|
1205
1211
|
|
|
1206
1212
|
def rgb_to_hex(self, input_rgb, option="#"):
|
|
1213
|
+
return change_rgb_to_hex(input_rgb, option)
|
|
1214
|
+
|
|
1215
|
+
def change_rgb_to_hex(self, input_rgb, option="#"):
|
|
1207
1216
|
"""
|
|
1208
1217
|
엑셀의 Cells(1, i).Interior.Color는 hex값을 사용한다
|
|
1209
1218
|
|
|
@@ -1228,6 +1237,9 @@ class xy_color:
|
|
|
1228
1237
|
return (b << 16) | (g << 8) | r
|
|
1229
1238
|
|
|
1230
1239
|
def rgb_to_hsl(self, input_rgb):
|
|
1240
|
+
return self.change_rgb_to_hsl(input_rgb)
|
|
1241
|
+
|
|
1242
|
+
def change_rgb_to_hsl(self, input_rgb):
|
|
1231
1243
|
"""
|
|
1232
1244
|
input_rgb를 hsl로 바꾸는 것이다
|
|
1233
1245
|
|
|
@@ -1264,6 +1276,18 @@ class xy_color:
|
|
|
1264
1276
|
|
|
1265
1277
|
return [int(h), int(s * 100), int(l * 100)]
|
|
1266
1278
|
|
|
1279
|
+
def change_rgb_to_rgbint(self, input_rgb):
|
|
1280
|
+
"""
|
|
1281
|
+
input_rgb인 값을 color에서 인식이 가능한 정수값으로 변경하는 것
|
|
1282
|
+
엑셀에서는 input_rgb형태의 리스트나 정수를 사용하여 색을 지정한다
|
|
1283
|
+
|
|
1284
|
+
:param input_rgb: [r,g,b]값
|
|
1285
|
+
:return:
|
|
1286
|
+
"""
|
|
1287
|
+
result = int(input_rgb[0]) + (int(input_rgb[1])) * 256 + (int(input_rgb[2])) * (256 ** 2)
|
|
1288
|
+
return result
|
|
1289
|
+
|
|
1290
|
+
|
|
1267
1291
|
def rgb_to_rgbint(self, input_rgb):
|
|
1268
1292
|
"""
|
|
1269
1293
|
input_rgb인 값을 color에서 인식이 가능한 정수값으로 변경하는 것
|
|
@@ -1303,6 +1327,9 @@ class xy_color:
|
|
|
1303
1327
|
return colorname
|
|
1304
1328
|
|
|
1305
1329
|
def rgbint_to_hsl(self, input_rgbint):
|
|
1330
|
+
return self.change_rgbint_to_hsl(input_rgbint)
|
|
1331
|
+
|
|
1332
|
+
def change_rgbint_to_hsl(self, input_rgbint):
|
|
1306
1333
|
"""
|
|
1307
1334
|
정수형태의 int값을 [h,s,l]의 리스트형태로 바꾸는 것
|
|
1308
1335
|
|
|
@@ -1313,7 +1340,7 @@ class xy_color:
|
|
|
1313
1340
|
hsl = self.rgb_to_hsl(rgb)
|
|
1314
1341
|
return hsl
|
|
1315
1342
|
|
|
1316
|
-
def
|
|
1343
|
+
def change_rgbint_to_rgb(self, input_rgbint):
|
|
1317
1344
|
"""
|
|
1318
1345
|
정수형태의 int값을 [r,g,b]의 리스트형태로 바꾸는 것
|
|
1319
1346
|
|
|
@@ -1325,6 +1352,9 @@ class xy_color:
|
|
|
1325
1352
|
result = [namuji1, mok1, mok0]
|
|
1326
1353
|
return result
|
|
1327
1354
|
|
|
1355
|
+
def rgbint_to_rgb(self, input_rgbint):
|
|
1356
|
+
return self.change_rgbint_to_rgb(input_rgbint)
|
|
1357
|
+
|
|
1328
1358
|
def change_style(self, input_xcolor, style_name):
|
|
1329
1359
|
"""
|
|
1330
1360
|
자주 사용하는 형태라서 입력되는 색을 pccs스타일중의 하나로 변경하는 것
|
|
@@ -1620,6 +1650,18 @@ class xy_color:
|
|
|
1620
1650
|
result = self.rgb_to_rgbint(rgb_list)
|
|
1621
1651
|
return result
|
|
1622
1652
|
|
|
1653
|
+
def change_any_color_to_rgbint(self, input_xcolor):
|
|
1654
|
+
"""
|
|
1655
|
+
xcolor값을 rgbint로 변경
|
|
1656
|
+
xcolor형식 : 12, "red", "red45", "red++"
|
|
1657
|
+
|
|
1658
|
+
:param input_xcolor: solor형태의 색깔입력, (12, "red", "red45", "red++")
|
|
1659
|
+
"""
|
|
1660
|
+
rgb_list = self.change_xcolor_to_rgb(input_xcolor)
|
|
1661
|
+
result = self.rgb_to_rgbint(rgb_list)
|
|
1662
|
+
return result
|
|
1663
|
+
|
|
1664
|
+
|
|
1623
1665
|
def check_color_name(self, input_value):
|
|
1624
1666
|
result = self.varx["check_color"][input_value]
|
|
1625
1667
|
return result
|
|
@@ -162,7 +162,6 @@ class xy_excel:
|
|
|
162
162
|
elif left_or_right == "left":
|
|
163
163
|
self.add_text_at_left(self.sheet_name, self.xyxy, input_value)
|
|
164
164
|
|
|
165
|
-
|
|
166
165
|
def add_text_at_left(self, sheet_name='', xyxy='', input_value=None):
|
|
167
166
|
sheet, [x1, y1, x2, y2], rng = self.check_sheet_n_xyxy(sheet_name, xyxy)
|
|
168
167
|
for x, y in itertools.product(range(x1, x2 + 1), range(y1, y2 + 1)):
|
|
@@ -1603,10 +1602,10 @@ class xy_excel:
|
|
|
1603
1602
|
for y in range(y_len):
|
|
1604
1603
|
temp = ""
|
|
1605
1604
|
for x in range(x_len):
|
|
1606
|
-
self.
|
|
1605
|
+
self.write_value_for_cell("", [x + xy[0], y + xy[1]], "")
|
|
1607
1606
|
if input_list_2d[x][y]:
|
|
1608
1607
|
temp = temp + " " + input_list_2d[x][y]
|
|
1609
|
-
self.
|
|
1608
|
+
self.write_value_for_cell("", [xy[0], y + xy[1]], str(temp).strip())
|
|
1610
1609
|
|
|
1611
1610
|
def conditional_format_by_cell_value(self, sheet_name, xyxy, input_color, start_xy, input_value, cf_no):
|
|
1612
1611
|
"""
|
|
@@ -2880,7 +2879,7 @@ class xy_excel:
|
|
|
2880
2879
|
|
|
2881
2880
|
"""
|
|
2882
2881
|
sheet = self.check_sheet_name('')
|
|
2883
|
-
xyxy = self.
|
|
2882
|
+
xyxy = self.get_address_for_selection()
|
|
2884
2883
|
for x in range(xyxy[0], xyxy[2] + 1):
|
|
2885
2884
|
for y in range(xyxy[1], xyxy[3] + 1):
|
|
2886
2885
|
one_value = sheet.Cells(x, y).Value
|
|
@@ -2893,7 +2892,7 @@ class xy_excel:
|
|
|
2893
2892
|
"""
|
|
2894
2893
|
|
|
2895
2894
|
"""
|
|
2896
|
-
self.
|
|
2895
|
+
self.delete_same_value_for_range_over_n_times(2)
|
|
2897
2896
|
|
|
2898
2897
|
def delete_same_value_for_range(self, sheet_name='', xyxy=''):
|
|
2899
2898
|
"""
|
|
@@ -4353,7 +4352,7 @@ class xy_excel:
|
|
|
4353
4352
|
result = []
|
|
4354
4353
|
sheets_name = self.all_sheet_name()
|
|
4355
4354
|
for sheet_name in sheets_name:
|
|
4356
|
-
shapes_name = self.
|
|
4355
|
+
shapes_name = self.get_all_shape_name_for_sheet(sheet_name)
|
|
4357
4356
|
if shapes_name:
|
|
4358
4357
|
for shape_name in shapes_name:
|
|
4359
4358
|
result.append([sheet_name, shape_name])
|
|
@@ -4814,7 +4813,7 @@ class xy_excel:
|
|
|
4814
4813
|
|
|
4815
4814
|
if rng.MergeCells:
|
|
4816
4815
|
rng.Select()
|
|
4817
|
-
ddd = self.
|
|
4816
|
+
ddd = self.get_address_for_selection()
|
|
4818
4817
|
if not ddd in result:
|
|
4819
4818
|
result.append(ddd)
|
|
4820
4819
|
return result
|
|
@@ -5325,12 +5324,17 @@ class xy_excel:
|
|
|
5325
5324
|
# 3. 결과를 다시 리스트의 리스트 형태로 변환
|
|
5326
5325
|
return [list(row) for row in unique_set]
|
|
5327
5326
|
|
|
5328
|
-
def
|
|
5327
|
+
def get_username_for_workbook(self):
|
|
5329
5328
|
"""
|
|
5330
5329
|
사용자 이름을 읽어온다
|
|
5330
|
+
"""
|
|
5331
|
+
return self.xlapp.UserName
|
|
5331
5332
|
|
|
5333
|
+
def get_username(self):
|
|
5334
|
+
"""
|
|
5335
|
+
사용자 이름을 읽어온다
|
|
5332
5336
|
"""
|
|
5333
|
-
return self.
|
|
5337
|
+
return self.xlapp.UserName
|
|
5334
5338
|
|
|
5335
5339
|
def get_vba_module_names(self):
|
|
5336
5340
|
"""
|
|
@@ -6336,7 +6340,7 @@ class xy_excel:
|
|
|
6336
6340
|
# 한번 붙여넣기를 하면 없어져서, 계속 해야한다
|
|
6337
6341
|
no = no + 1
|
|
6338
6342
|
xl2 = xy_excel("new")
|
|
6339
|
-
xl2.
|
|
6343
|
+
xl2.paste_format_only_for_range("", [1, 1])
|
|
6340
6344
|
xl2.write_l1d_from_cell("", [1, 1], l2d[0])
|
|
6341
6345
|
xl2.write_l2d_from_cell("", [1, 1], l2d_group[index + 1])
|
|
6342
6346
|
xl2.save(filename + str(no) + ".xlsx")
|
|
@@ -7321,7 +7325,7 @@ class xy_excel:
|
|
|
7321
7325
|
세로의 값을 이동시킵니다
|
|
7322
7326
|
|
|
7323
7327
|
"""
|
|
7324
|
-
self.
|
|
7328
|
+
self.move_yyline_to_another_sheet_for_range(sheet_name1, sheet_name2, yy_list0, yy_list1)
|
|
7325
7329
|
|
|
7326
7330
|
def move_yyline_to_another_sheet_for_range(self, sheet_name1, sheet_name2, yy_list0, yy_list1):
|
|
7327
7331
|
"""
|
|
@@ -7754,6 +7758,12 @@ class xy_excel:
|
|
|
7754
7758
|
new_shape_obj = sheet.Shapes.AddLine(cxyxy[0], cxyxy[1], cxyxy[2], cxyxy[3])
|
|
7755
7759
|
return new_shape_obj
|
|
7756
7760
|
|
|
7761
|
+
def new_range_for_range(self, sheet_name, xyxy):
|
|
7762
|
+
sheet = self.check_sheet_name(sheet_name)
|
|
7763
|
+
[x1, y1, x2, y2] = self.change_address_to_xyxy(xyxy)
|
|
7764
|
+
range_obj = sheet.Range(sheet.Cells(x1, y1), sheet.Cells(x2, y2))
|
|
7765
|
+
return range_obj
|
|
7766
|
+
|
|
7757
7767
|
def new_line_by_pxyxy(self, sheet_name, pxyxy):
|
|
7758
7768
|
"""
|
|
7759
7769
|
4개영역의 픽셀값을 가지고 사각형을 그리는 것
|
|
@@ -8355,15 +8365,27 @@ class xy_excel:
|
|
|
8355
8365
|
result = [lb, rb, rt]
|
|
8356
8366
|
return result
|
|
8357
8367
|
|
|
8358
|
-
def new_workbook_with_file_path(self,
|
|
8368
|
+
def new_workbook_with_file_path(self, filename=None):
|
|
8359
8369
|
"""
|
|
8360
8370
|
엑셀화일 열기
|
|
8361
|
-
|
|
8362
8371
|
new_workbook_with_file_path(input_filename="D:\\my_file.xlsx")
|
|
8363
8372
|
new_workbook_with_file_path("D:\\my_file.xlsx")
|
|
8364
8373
|
new_workbook_with_file_path("D:\\my_file2.xlsx")
|
|
8365
8374
|
"""
|
|
8366
|
-
|
|
8375
|
+
# 열려진 화일중에 같은 것이 없으면, 화일을 연다
|
|
8376
|
+
path = ""
|
|
8377
|
+
self.xlapp.WindowState = -4137
|
|
8378
|
+
self.xlapp.Visible = 1
|
|
8379
|
+
if not "\\" in filename:
|
|
8380
|
+
path = os.path.normpath(os.getcwd()) + '\\'
|
|
8381
|
+
|
|
8382
|
+
if path.endswith('\\'):
|
|
8383
|
+
self.xlbook = self.xlapp.Workbooks.Open(path + filename + ".xlsx")
|
|
8384
|
+
else:
|
|
8385
|
+
self.xlbook = self.xlapp.Workbooks.Open(path + '\\' + filename + ".xlsx")
|
|
8386
|
+
|
|
8387
|
+
def new_workbook(self, filename):
|
|
8388
|
+
self.new_workbook_with_file_path(filename)
|
|
8367
8389
|
|
|
8368
8390
|
def new_xy_list_for_box_style(self, xyxy=''):
|
|
8369
8391
|
"""
|
|
@@ -10785,10 +10807,9 @@ class xy_excel:
|
|
|
10785
10807
|
self.xlapp.Workbooks(input_filename).Activate()
|
|
10786
10808
|
self.xlapp.WindowState = win32com.client.constants.xlMaximized
|
|
10787
10809
|
|
|
10788
|
-
def
|
|
10810
|
+
def select_xline_for_sheet(self, sheet_name, x_list):
|
|
10789
10811
|
"""
|
|
10790
10812
|
하나의 가로줄을 선택하는 것
|
|
10791
|
-
|
|
10792
10813
|
"""
|
|
10793
10814
|
sheet = self.check_sheet_name(sheet_name)
|
|
10794
10815
|
if isinstance(x_list, int):
|
|
@@ -10798,6 +10819,12 @@ class xy_excel:
|
|
|
10798
10819
|
changed_address = str(start) + ":" + str(start)
|
|
10799
10820
|
sheet.Rows(changed_address).Select()
|
|
10800
10821
|
|
|
10822
|
+
def select_xline(self, sheet_name, x_list):
|
|
10823
|
+
"""
|
|
10824
|
+
하나의 가로줄을 선택하는 것
|
|
10825
|
+
"""
|
|
10826
|
+
self.select_xline_for_sheet(sheet_name, x_list)
|
|
10827
|
+
|
|
10801
10828
|
def select_xxline(self, sheet_name, xx_list):
|
|
10802
10829
|
sheet = self.check_sheet_name(sheet_name)
|
|
10803
10830
|
start = self.change_char_to_num(xx_list[0])
|
|
@@ -10810,7 +10837,7 @@ class xy_excel:
|
|
|
10810
10837
|
rng.Select()
|
|
10811
10838
|
return [x1, y1, x2, y2]
|
|
10812
10839
|
|
|
10813
|
-
def
|
|
10840
|
+
def select_yline_for_sheet(self, sheet_name, y_list):
|
|
10814
10841
|
"""
|
|
10815
10842
|
하나의 세로열을 선택하는 것
|
|
10816
10843
|
"""
|
|
@@ -10822,6 +10849,12 @@ class xy_excel:
|
|
|
10822
10849
|
changed_address = str(start) + ":" + str(start)
|
|
10823
10850
|
sheet.Columns(changed_address).Select()
|
|
10824
10851
|
|
|
10852
|
+
def select_yline(self, sheet_name, y_list):
|
|
10853
|
+
"""
|
|
10854
|
+
하나의 세로열을 선택하는 것
|
|
10855
|
+
"""
|
|
10856
|
+
self.select_yline_for_sheet(sheet_name, y_list)
|
|
10857
|
+
|
|
10825
10858
|
def select_yyline(self, sheet_name, yy_list):
|
|
10826
10859
|
sheet = self.check_sheet_name(sheet_name)
|
|
10827
10860
|
start = self.change_num_to_char(yy_list[0])
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: xython
|
|
3
|
-
Version: 4.3.
|
|
3
|
+
Version: 4.3.6
|
|
4
|
+
Summary: xython package
|
|
4
5
|
Author-email: "SJ.Park" <sjpkorea@naver.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/yourname/xython
|
|
8
|
+
Requires-Python: >=3.8
|
|
5
9
|
Description-Content-Type: text/markdown
|
|
6
10
|
Requires-Dist: korean_lunar_calendar
|
|
7
11
|
Requires-Dist: arrow
|
|
@@ -13,6 +17,10 @@ Requires-Dist: screeninfo
|
|
|
13
17
|
Requires-Dist: pywinauto
|
|
14
18
|
Requires-Dist: psutil
|
|
15
19
|
|
|
20
|
+
# 4.3.6을 기준으로 각 모듈이름을 변경함 (2026-05-10)
|
|
21
|
+
> - 각 모듈의 객체이름은 xy를 붙여서 사용 (예 : xyexcel)<br>
|
|
22
|
+
> - xy_edge를 추가함 : Drissionpage를 사용함<br>
|
|
23
|
+
> - 전체적으로 이름을 변경<br>
|
|
16
24
|
|
|
17
25
|
# 4.0.0을 기준으로 각 모듈이름을 변경함 (2025-03-26)
|
|
18
26
|
> - 쉽게 : **xy_** 접두어로 모든 모듈이름을 변경<br>
|
|
@@ -74,6 +82,8 @@ It can handle for Excel, Hwp, Word, Outlook, Color, Etc by xython**
|
|
|
74
82
|
| 12 | xy_list | New List (start from 1) (**for common use**) |
|
|
75
83
|
| 13 | xy_util | utilities (**for common use**) |
|
|
76
84
|
| 14 | xy_auto | for Keyboard & Mouse control (**for common use**) |
|
|
85
|
+
| 15 | xy_edge | for web control |
|
|
86
|
+
| 16 | xy_chrome | for web control |
|
|
77
87
|
|
|
78
88
|
|
|
79
89
|
## xython 각 모듈의 간략한 설명
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
MANIFEST.in
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
requirements.txt
|
|
5
|
+
src/xython/__init__.py
|
|
6
|
+
src/xython/xy_auto.py
|
|
7
|
+
src/xython/xy_chrome.py
|
|
8
|
+
src/xython/xy_color.py
|
|
9
|
+
src/xython/xy_common.py
|
|
10
|
+
src/xython/xy_db.py
|
|
11
|
+
src/xython/xy_edge.py
|
|
12
|
+
src/xython/xy_excel.py
|
|
13
|
+
src/xython/xy_excel_event.py
|
|
14
|
+
src/xython/xy_hwp.py
|
|
15
|
+
src/xython/xy_list.py
|
|
16
|
+
src/xython/xy_map.py
|
|
17
|
+
src/xython/xy_outlook.py
|
|
18
|
+
src/xython/xy_re.py
|
|
19
|
+
src/xython/xy_time.py
|
|
20
|
+
src/xython/xy_util.py
|
|
21
|
+
src/xython/xy_word.py
|
|
22
|
+
src/xython.egg-info/PKG-INFO
|
|
23
|
+
src/xython.egg-info/SOURCES.txt
|
|
24
|
+
src/xython.egg-info/dependency_links.txt
|
|
25
|
+
src/xython.egg-info/requires.txt
|
|
26
|
+
src/xython.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
xython
|
xython-4.3.3/src/setup.py
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
from setuptools import setup, find_packages
|
|
3
|
-
|
|
4
|
-
setup(
|
|
5
|
-
name='xython',
|
|
6
|
-
version='4.3.0',
|
|
7
|
-
url='https://www.xython.co.kr',
|
|
8
|
-
install_requires=[
|
|
9
|
-
"screeninfo",
|
|
10
|
-
"pyperclip",
|
|
11
|
-
"pywinauto",
|
|
12
|
-
"psutil",
|
|
13
|
-
"pywin32",
|
|
14
|
-
"PyGetWindow",
|
|
15
|
-
"pyautogui",
|
|
16
|
-
"matplotlib",
|
|
17
|
-
"folium",
|
|
18
|
-
"arrow",
|
|
19
|
-
"korean-lunar-calendar",
|
|
20
|
-
"python-dateutil",
|
|
21
|
-
"selenium",
|
|
22
|
-
],
|
|
23
|
-
download_url='https://github.com/sjpark/xython/archive/v4.3.0.tar.gz',
|
|
24
|
-
author='s.j.park',
|
|
25
|
-
author_email='sjpkorea@naver.com',
|
|
26
|
-
description="win32com + python + Office Automation = xython",
|
|
27
|
-
packages=find_packages("src"),
|
|
28
|
-
package_dir={"": "src"},
|
|
29
|
-
include_package_data=True,
|
|
30
|
-
package_data={
|
|
31
|
-
"xython": ["*.*"],
|
|
32
|
-
},
|
|
33
|
-
long_description_content_type="text/markdown",
|
|
34
|
-
long_description=open('README.md', "r", encoding='UTF8').read(),
|
|
35
|
-
python_requires='>=3.8',
|
|
36
|
-
zip_safe=False,
|
|
37
|
-
classifiers=[
|
|
38
|
-
'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
|
|
39
|
-
],
|
|
40
|
-
project_urls={
|
|
41
|
-
'Documentation': 'https://sjpkorea.github.io/xython.github.io/',
|
|
42
|
-
'Link 1': 'https://www.xython.co.kr',
|
|
43
|
-
}
|
|
44
|
-
)
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
MANIFEST.in
|
|
2
|
-
README.md
|
|
3
|
-
pyproject.toml
|
|
4
|
-
requirements.txt
|
|
5
|
-
./src/setup.py
|
|
6
|
-
./src/xython/__init__.py
|
|
7
|
-
./src/xython/xy_auto.py
|
|
8
|
-
./src/xython/xy_chrome.py
|
|
9
|
-
./src/xython/xy_color.py
|
|
10
|
-
./src/xython/xy_common.py
|
|
11
|
-
./src/xython/xy_db.py
|
|
12
|
-
./src/xython/xy_edge.py
|
|
13
|
-
./src/xython/xy_excel.py
|
|
14
|
-
./src/xython/xy_excel_event.py
|
|
15
|
-
./src/xython/xy_hwp.py
|
|
16
|
-
./src/xython/xy_list.py
|
|
17
|
-
./src/xython/xy_map.py
|
|
18
|
-
./src/xython/xy_outlook.py
|
|
19
|
-
./src/xython/xy_re.py
|
|
20
|
-
./src/xython/xy_time.py
|
|
21
|
-
./src/xython/xy_util.py
|
|
22
|
-
./src/xython/xy_word.py
|
|
23
|
-
src/setup.py
|
|
24
|
-
src/xython/__init__.py
|
|
25
|
-
src/xython/xy_auto.py
|
|
26
|
-
src/xython/xy_chrome.py
|
|
27
|
-
src/xython/xy_color.py
|
|
28
|
-
src/xython/xy_common.py
|
|
29
|
-
src/xython/xy_db.py
|
|
30
|
-
src/xython/xy_edge.py
|
|
31
|
-
src/xython/xy_excel.py
|
|
32
|
-
src/xython/xy_excel_event.py
|
|
33
|
-
src/xython/xy_hwp.py
|
|
34
|
-
src/xython/xy_list.py
|
|
35
|
-
src/xython/xy_map.py
|
|
36
|
-
src/xython/xy_outlook.py
|
|
37
|
-
src/xython/xy_re.py
|
|
38
|
-
src/xython/xy_time.py
|
|
39
|
-
src/xython/xy_util.py
|
|
40
|
-
src/xython/xy_word.py
|
|
41
|
-
xython.egg-info/PKG-INFO
|
|
42
|
-
xython.egg-info/SOURCES.txt
|
|
43
|
-
xython.egg-info/dependency_links.txt
|
|
44
|
-
xython.egg-info/requires.txt
|
|
45
|
-
xython.egg-info/top_level.txt
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|