0
아래 코드를 사용하면 connections.xml
파일에서 잔여 데이터를 제거하여 수정할 수있는 xlsx 파일이 손상됩니다. 문제점의 원인 및 해결 방법은 무엇입니까?XmlNode 값을 대체하는 OpenXML은 잔여 데이터를 남깁니다.
using (SpreadsheetDocument excelDoc = SpreadsheetDocument.Open(file.FullName, true))
{
WorkbookPart workbookpart = excelDoc.WorkbookPart;
ConnectionsPart connPart = workbookpart.ConnectionsPart;
string spreadsheetmlNamespace = @"http://schemas.openxmlformats.org/spreadsheetml/2006/main";
NameTable nt = new NameTable();
XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
nsManager.AddNamespace("sh", spreadsheetmlNamespace);
XmlDocument xdoc = new XmlDocument(nt);
xdoc.Load(connPart.GetStream());
XmlNode oxmlNode = xdoc.SelectSingleNode("/sh:connections/sh:connection/sh:dbPr/@connection", nsManager);
oxmlNode.Value = oxmlNode.Value.Replace(oxmlNode.Value, "foo");
xdoc.Save(connPart.GetStream());
}
은 무엇 connections.xml
로 나오는 것은 다음과 같습니다
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<connections xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<connection id="1" keepAlive="1" name="LCR" type="5" refreshedVersion="4" background="1" saveData="1">
<dbPr connection="foo" command="test" commandType="1" />
<olapPr sendLocale="1" rowDrillCount="1000" serverFill="0" serverFont="0" serverFontColor="0" />
</connection>
</connections>y Options=2;MDX Missing Member Mode=Error;Disable Prefetch Facts=True" command="test" commandType="1"/><olapPr sendLocale="1" rowDrillCount="1000" serverFill="0" serverFont="0" serverFontColor="0"/></connection></connections>
마지막에 잔류 데이터를 유의하시기 바랍니다. 제거하면 xlsx를 다시 열 수 있습니다.