문서수정기호관련(2-29.30) 편집 채점기준 수정
This commit is contained in:
@@ -1,55 +0,0 @@
|
|||||||
from pathlib import Path
|
|
||||||
from lxml import etree as ET
|
|
||||||
import base64
|
|
||||||
import re
|
|
||||||
|
|
||||||
class binaryToChartxml:
|
|
||||||
def __init__(self, xml_path):
|
|
||||||
self.tree = ET.parse(xml_path)
|
|
||||||
self.root = self.tree.getroot()
|
|
||||||
|
|
||||||
def decoding_bindata(self):
|
|
||||||
binary_data = self.root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
|
|
||||||
binary_data = binary_data[0].encode('utf-8')
|
|
||||||
encoded_data = re.sub(b'<BINDATA.*?>', b'', binary_data)
|
|
||||||
|
|
||||||
# print(encoded_data)
|
|
||||||
encoded_data = encoded_data.replace(b'</BINDATA>', b'')
|
|
||||||
encoded_data = encoded_data.replace(b'\r\n', b'')
|
|
||||||
|
|
||||||
# base64 디코딩을 수행합니다.
|
|
||||||
decoded_data = base64.b64decode(encoded_data+b'==')
|
|
||||||
|
|
||||||
print(decoded_data)
|
|
||||||
|
|
||||||
# 디코딩된 데이터 내용 중 xml 형식만 추출할 때 <c:chartSpace>, </c:chartSpace> 사이의 데이터만 추출.
|
|
||||||
start = decoded_data.find(b'<?xml')
|
|
||||||
# print(start)
|
|
||||||
end = decoded_data.find(b'</c:chartSpace>')
|
|
||||||
# print(end)
|
|
||||||
self.xml_data = decoded_data[start:end+len(b'</c:chartSpace>')]
|
|
||||||
|
|
||||||
|
|
||||||
# def save_chart_xml(self, xml_output_path):
|
|
||||||
# def save_chart_xml(self):
|
|
||||||
# with open(, 'wb') as file:
|
|
||||||
# file.write(self.xml_data)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# xml 파일 읽기
|
|
||||||
# xml_path = r"C:\Users\dra\project\HWP-Scoring\output\워드(한글)-009865-고미송.hml"
|
|
||||||
# tree = ET.parse(xml_path)
|
|
||||||
# root = tree.getroot()
|
|
||||||
# # xpath로 바이너리 부분추출
|
|
||||||
# binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
|
|
||||||
# binary_data = str(binary_data[0])
|
|
||||||
# print(f'binary : {binary_data}')
|
|
||||||
# # base64 디코딩
|
|
||||||
# decoded_data = base64.b64decode(binary_data)
|
|
||||||
|
|
||||||
# # 디코딩된 데이터를 파일로 저장
|
|
||||||
# output_file = f"decoded_output_test.bin"
|
|
||||||
# with open(output_file, "wb") as decoded_file:
|
|
||||||
# decoded_file.write(decoded_data)
|
|
||||||
297
ext_BinData.xml
297
ext_BinData.xml
@@ -1,297 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
|
||||||
<c:chartSpace xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
|
||||||
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
|
|
||||||
xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart">
|
|
||||||
<c:date1904 val="0"/>
|
|
||||||
<c:roundedCorners val="0"/>
|
|
||||||
<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
|
|
||||||
<mc:Choice xmlns:c14="http://schemas.microsoft.com/office/drawing/2007/8/2/chart" Requires="c14">
|
|
||||||
<c14:style val="102"/>
|
|
||||||
</mc:Choice>
|
|
||||||
<mc:Fallback>
|
|
||||||
<c:style val="2"/>
|
|
||||||
</mc:Fallback>
|
|
||||||
</mc:AlternateContent>
|
|
||||||
<c:chart>
|
|
||||||
<c:title>
|
|
||||||
<c:tx>
|
|
||||||
<c:rich>
|
|
||||||
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
|
|
||||||
<a:p>
|
|
||||||
<a:pPr algn="l">
|
|
||||||
<a:defRPr sz="1400" b="1" i="0" u="none">
|
|
||||||
<a:solidFill>
|
|
||||||
<a:srgbClr val="000000"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:latin typeface="돋움체"/>
|
|
||||||
<a:ea typeface="돋움체"/>
|
|
||||||
<a:cs typeface="돋움체"/>
|
|
||||||
<a:sym typeface="돋움체"/>
|
|
||||||
</a:defRPr>
|
|
||||||
</a:pPr>
|
|
||||||
<a:r>
|
|
||||||
<a:rPr sz="1400" b="1" i="0" u="none">
|
|
||||||
<a:solidFill>
|
|
||||||
<a:srgbClr val="000000"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:latin typeface="돋움체"/>
|
|
||||||
<a:ea typeface="돋움체"/>
|
|
||||||
<a:cs typeface="돋움체"/>
|
|
||||||
<a:sym typeface="돋움체"/>
|
|
||||||
</a:rPr>
|
|
||||||
<a:t>과일야채 항산화지수 비교</a:t>
|
|
||||||
</a:r>
|
|
||||||
<a:endParaRPr/>
|
|
||||||
</a:p>
|
|
||||||
</c:rich>
|
|
||||||
</c:tx>
|
|
||||||
<c:layout>
|
|
||||||
<c:manualLayout>
|
|
||||||
<c:xMode val="edge"/>
|
|
||||||
<c:yMode val="edge"/>
|
|
||||||
<c:x val="0.10400000214576721191"/>
|
|
||||||
<c:y val="0.03550000116229057312"/>
|
|
||||||
<c:w val="0.79175001382827758789"/>
|
|
||||||
<c:h val="0.13300000131130218506"/>
|
|
||||||
</c:manualLayout>
|
|
||||||
</c:layout>
|
|
||||||
<c:overlay val="0"/>
|
|
||||||
<c:spPr>
|
|
||||||
<a:noFill/>
|
|
||||||
</c:spPr>
|
|
||||||
</c:title>
|
|
||||||
<c:autoTitleDeleted val="0"/>
|
|
||||||
<c:plotArea>
|
|
||||||
<c:layout>
|
|
||||||
<c:manualLayout>
|
|
||||||
<c:layoutTarget val="inner"/>
|
|
||||||
<c:xMode val="edge"/>
|
|
||||||
<c:yMode val="edge"/>
|
|
||||||
<c:x val="0.03249999880790710449"/>
|
|
||||||
<c:y val="0.19900000095367431641"/>
|
|
||||||
<c:w val="0.92449998855590820313"/>
|
|
||||||
<c:h val="0.59175002574920654297"/>
|
|
||||||
</c:manualLayout>
|
|
||||||
</c:layout>
|
|
||||||
<c:barChart>
|
|
||||||
<c:barDir val="col"/>
|
|
||||||
<c:grouping val="clustered"/>
|
|
||||||
<c:varyColors val="0"/>
|
|
||||||
<c:ser>
|
|
||||||
<c:idx val="0"/>
|
|
||||||
<c:order val="0"/>
|
|
||||||
<c:tx>
|
|
||||||
<c:strRef>
|
|
||||||
<c:f>항산화지수(100g당)</c:f>
|
|
||||||
<c:strCache>
|
|
||||||
<c:ptCount val="1"/>
|
|
||||||
<c:pt idx="0">
|
|
||||||
<c:v>항산화지수(100g당)</c:v>
|
|
||||||
</c:pt>
|
|
||||||
</c:strCache>
|
|
||||||
</c:strRef>
|
|
||||||
</c:tx>
|
|
||||||
<c:spPr>
|
|
||||||
<a:solidFill>
|
|
||||||
<a:srgbClr val="73b1d1"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
|
|
||||||
<a:noFill/>
|
|
||||||
<a:prstDash val="solid"/>
|
|
||||||
<a:round/>
|
|
||||||
<a:headEnd w="med" len="med"/>
|
|
||||||
<a:tailEnd w="med" len="med"/>
|
|
||||||
</a:ln>
|
|
||||||
</c:spPr>
|
|
||||||
<c:invertIfNegative val="0"/>
|
|
||||||
<c:cat>
|
|
||||||
<c:strRef>
|
|
||||||
<c:f>{"블루베리", "딸기", "자두", "오렌지", "시금치", "양배추"}</c:f>
|
|
||||||
<c:strCache>
|
|
||||||
<c:ptCount val="6"/>
|
|
||||||
<c:pt idx="0">
|
|
||||||
<c:v>블루베리</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="1">
|
|
||||||
<c:v>딸기</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="2">
|
|
||||||
<c:v>자두</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="3">
|
|
||||||
<c:v>오렌지</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="4">
|
|
||||||
<c:v>시금치</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="5">
|
|
||||||
<c:v>양배추</c:v>
|
|
||||||
</c:pt>
|
|
||||||
</c:strCache>
|
|
||||||
</c:strRef>
|
|
||||||
</c:cat>
|
|
||||||
<c:val>
|
|
||||||
<c:numLit>
|
|
||||||
<c:formatCode>General</c:formatCode>
|
|
||||||
<c:ptCount val="6"/>
|
|
||||||
<c:pt idx="0">
|
|
||||||
<c:v>2400</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="1">
|
|
||||||
<c:v>1540</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="2">
|
|
||||||
<c:v>949</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="3">
|
|
||||||
<c:v>750</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="4">
|
|
||||||
<c:v>1260</c:v>
|
|
||||||
</c:pt>
|
|
||||||
<c:pt idx="5">
|
|
||||||
<c:v>980</c:v>
|
|
||||||
</c:pt>
|
|
||||||
</c:numLit>
|
|
||||||
</c:val>
|
|
||||||
</c:ser>
|
|
||||||
<c:gapWidth val="100"/>
|
|
||||||
<c:overlap val="0"/>
|
|
||||||
<c:axId val="0"/>
|
|
||||||
<c:axId val="1"/>
|
|
||||||
</c:barChart>
|
|
||||||
<c:catAx>
|
|
||||||
<c:axId val="0"/>
|
|
||||||
<c:scaling>
|
|
||||||
<c:orientation val="minMax"/>
|
|
||||||
</c:scaling>
|
|
||||||
<c:axPos val="b"/>
|
|
||||||
<c:crossAx val="1"/>
|
|
||||||
<c:delete val="0"/>
|
|
||||||
<c:majorTickMark val="none"/>
|
|
||||||
<c:minorTickMark val="none"/>
|
|
||||||
<c:tickLblPos val="nextTo"/>
|
|
||||||
<c:txPr>
|
|
||||||
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
|
|
||||||
<a:p>
|
|
||||||
<a:pPr algn="l">
|
|
||||||
<a:defRPr sz="900" b="0" i="1" u="none">
|
|
||||||
<a:solidFill>
|
|
||||||
<a:srgbClr val="000000"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:latin typeface="돋움"/>
|
|
||||||
<a:ea typeface="돋움"/>
|
|
||||||
<a:cs typeface="돋움"/>
|
|
||||||
<a:sym typeface="돋움"/>
|
|
||||||
</a:defRPr>
|
|
||||||
</a:pPr>
|
|
||||||
<a:endParaRPr/>
|
|
||||||
</a:p>
|
|
||||||
</c:txPr>
|
|
||||||
<c:crosses val="autoZero"/>
|
|
||||||
<c:auto val="1"/>
|
|
||||||
<c:lblAlgn val="ctr"/>
|
|
||||||
<c:lblOffset val="100"/>
|
|
||||||
<c:tickLblSkip val="1"/>
|
|
||||||
<c:tickMarkSkip val="1"/>
|
|
||||||
<c:noMultiLvlLbl val="0"/>
|
|
||||||
</c:catAx>
|
|
||||||
<c:valAx>
|
|
||||||
<c:axId val="1"/>
|
|
||||||
<c:scaling>
|
|
||||||
<c:orientation val="minMax"/>
|
|
||||||
</c:scaling>
|
|
||||||
<c:axPos val="l"/>
|
|
||||||
<c:crossAx val="0"/>
|
|
||||||
<c:delete val="0"/>
|
|
||||||
<c:numFmt formatCode="General" sourceLinked="1"/>
|
|
||||||
<c:majorTickMark val="out"/>
|
|
||||||
<c:minorTickMark val="none"/>
|
|
||||||
<c:tickLblPos val="nextTo"/>
|
|
||||||
<c:txPr>
|
|
||||||
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
|
|
||||||
<a:p>
|
|
||||||
<a:pPr algn="l">
|
|
||||||
<a:defRPr sz="900" b="0" i="1" u="none">
|
|
||||||
<a:solidFill>
|
|
||||||
<a:srgbClr val="000000"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:latin typeface="돋움"/>
|
|
||||||
<a:ea typeface="돋움"/>
|
|
||||||
<a:cs typeface="돋움"/>
|
|
||||||
<a:sym typeface="돋움"/>
|
|
||||||
</a:defRPr>
|
|
||||||
</a:pPr>
|
|
||||||
<a:endParaRPr/>
|
|
||||||
</a:p>
|
|
||||||
</c:txPr>
|
|
||||||
<c:crosses val="autoZero"/>
|
|
||||||
<c:crossBetween val="between"/>
|
|
||||||
</c:valAx>
|
|
||||||
<c:spPr>
|
|
||||||
<a:noFill/>
|
|
||||||
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
|
|
||||||
<a:noFill/>
|
|
||||||
<a:prstDash val="solid"/>
|
|
||||||
<a:round/>
|
|
||||||
<a:headEnd w="med" len="med"/>
|
|
||||||
<a:tailEnd w="med" len="med"/>
|
|
||||||
</a:ln>
|
|
||||||
</c:spPr>
|
|
||||||
</c:plotArea>
|
|
||||||
<c:legend>
|
|
||||||
<c:legendPos val="b"/>
|
|
||||||
<c:layout/>
|
|
||||||
<c:overlay val="0"/>
|
|
||||||
<c:spPr>
|
|
||||||
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
|
|
||||||
<a:solidFill>
|
|
||||||
<a:prstClr val="black"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:prstDash val="solid"/>
|
|
||||||
<a:round/>
|
|
||||||
<a:headEnd w="med" len="med"/>
|
|
||||||
<a:tailEnd w="med" len="med"/>
|
|
||||||
</a:ln>
|
|
||||||
</c:spPr>
|
|
||||||
<c:txPr>
|
|
||||||
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
|
|
||||||
<a:p>
|
|
||||||
<a:pPr algn="l">
|
|
||||||
<a:defRPr sz="900" b="0" i="1" u="none">
|
|
||||||
<a:solidFill>
|
|
||||||
<a:srgbClr val="000000"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:latin typeface="돋움"/>
|
|
||||||
<a:ea typeface="돋움"/>
|
|
||||||
<a:cs typeface="돋움"/>
|
|
||||||
<a:sym typeface="돋움"/>
|
|
||||||
</a:defRPr>
|
|
||||||
</a:pPr>
|
|
||||||
<a:endParaRPr/>
|
|
||||||
</a:p>
|
|
||||||
</c:txPr>
|
|
||||||
</c:legend>
|
|
||||||
<c:plotVisOnly val="1"/>
|
|
||||||
<c:dispBlanksAs val="gap"/>
|
|
||||||
</c:chart>
|
|
||||||
<c:spPr>
|
|
||||||
<a:solidFill>
|
|
||||||
<a:srgbClr val="ffffff"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:ln w="12700" cap="flat" cmpd="sng" algn="ctr">
|
|
||||||
<a:solidFill>
|
|
||||||
<a:srgbClr val="8c8c8c"/>
|
|
||||||
</a:solidFill>
|
|
||||||
<a:prstDash val="solid"/>
|
|
||||||
<a:round/>
|
|
||||||
<a:headEnd w="med" len="med"/>
|
|
||||||
<a:tailEnd w="med" len="med"/>
|
|
||||||
</a:ln>
|
|
||||||
</c:spPr>
|
|
||||||
<c:extLst>
|
|
||||||
<c:ext uri="CC8EB2C9-7E31-499d-B8F2-F6CE61031016">
|
|
||||||
<ho:hncChartStyle xmlns:ho="http://schemas.haansoft.com/office/8.0" layoutIndex="-1" colorIndex="0" styleIndex="0"/>
|
|
||||||
</c:ext>
|
|
||||||
</c:extLst>
|
|
||||||
</c:chartSpace>
|
|
||||||
@@ -469,7 +469,7 @@
|
|||||||
},
|
},
|
||||||
"2-25":{
|
"2-25":{
|
||||||
"path": "boolean(//CHAR[contains(text(),'MZ세대')]/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어')])",
|
"path": "boolean(//CHAR[contains(text(),'MZ세대')]/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어')])",
|
||||||
"path2": null,
|
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('MZ세대') + 1) = 'MZ세대']/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어')])",
|
||||||
"searchValue": null,
|
"searchValue": null,
|
||||||
"value":true,
|
"value":true,
|
||||||
"points": 3,
|
"points": 3,
|
||||||
@@ -577,7 +577,7 @@
|
|||||||
},
|
},
|
||||||
"2-37":{
|
"2-37":{
|
||||||
"path":"boolean(//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER[@Type='DoubleSlim' and @Width='0.5mm'])",
|
"path":"boolean(//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER[@Type='DoubleSlim' and @Width='0.5mm'])",
|
||||||
"path2": null,
|
"path2": "boolean(//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/BOTTOMBORDER[@Type='DoubleSlim' and @Width='0.5mm'])",
|
||||||
"searchValue": null,
|
"searchValue": null,
|
||||||
"value":true,
|
"value":true,
|
||||||
"points": 2,
|
"points": 2,
|
||||||
|
|||||||
Reference in New Issue
Block a user