2016-12-27 18 views
0

아래 코드는 프로그래밍 방식으로 Office 2010 Excel 스프레드 시트를 XML로 저장하는 데 사용하는 코드입니다. 이 코드는 Excel 저장 옵션과 일치하는 스키마로 완벽한 XML 문서를 생성합니다. 제 질문은 interop 어셈블리를 사용하지 않고이 문제를 해결할 수있는 방법입니다. Open XML 문서를 살펴본 결과 문서를 xml로 저장할 수있는 "다른 이름으로 저장"옵션을 찾을 수 없습니다. 이것이 가능한가? C# 또는 vb.net의 도움을 주시면 감사하겠습니다..XLSX 또는 .XLSM을 XML로 변환하십시오.

Private Function ConvertExcelToXml(path As String, file As String) As Boolean 
    Dim returnValue as Boolean 
    returnValue = True 
    Try 
     Dim importfile As String = (path & file) + ".xlsm" 
     Dim exportfile As String = (path & file) + ".xml" 
     Dim app As New Application() 
     app.Workbooks.Open(importfile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing) 
     Dim data As String = String.Empty 

     app.ActiveWorkbook.XmlMaps(1).ExportXml(data) 'export the excel sheet xml to the string variable 
     System.IO.File.Delete(exportfile) 'delete the file if it already exists 
     System.IO.File.WriteAllText(exportfile, data) 'write the new file 
     app.Workbooks.Close() 
    Catch ex As Exception 
     returnValue = false 
    End Try 
    return returnValue 
End Function 

덕분에, 짧은에 카오스

+0

XML로 변환 할 때 SpreadsheetML 또는 XML Spreadheets을 언급하고 있습니까? – strongbutgood

+0

그 형식이 무엇인지 정확하게 알지 못합니다. Excel 내에서 "다른 이름으로 저장"옵션을 사용하면 얻을 수있는 것과 일치하는 XML 파일을 얻으려고합니다. – Chaos

+0

그래서'ActiveWorkbook.XmlMaps (1)'에 의해 검색된) xml 맵을 스프레드 시트에 어떻게 가져오고 있습니까? 처음에 일부 XML을 Excel로 가져 오거나 프로그래밍 방식으로지도를 추가하고 있습니까? – strongbutgood

답변

0

은 상호 운용성이 가장 가능성이 아니라 당신은 무엇을 달성하고자하는의 박스 솔루션 벗어났습니다. 일할 수있는

몇 가지 가능한 리드는 다음과 같습니다 here for free를 찾을 수 있습니다

  1. Spire.XLS. 그것은 스키마 주어진 XML을 내보내는 지원할 수있는 것 같아요하지만 난 피상적 인 브라우징 주어진 내기를하지 않을 것입니다.
  2. ClosedXML, 기본 데이터에 대한 인터페이스와 같은 더 많은 응용 프로그램을 제공하는 OpenXML에 대한 래퍼입니다. 소스 코드와 문서를 탐색하는 것에서 xml 맵을 내보낼 가능성이 희박합니다.

XML 매핑의 내용을 얻기 위해 OpenXML을 사용하여 자신 만의 롤백을 할 수 있습니다. OpenXML에서 XML 맵이 작동하는 방법에 대한 answer은 해당 경로를 사용하려는 경우 CustomXmlMappingsPart을 가리 킵니다.

그러나 내 추천은 interop이 우수하고 전문가가 찬성과 함께한다는 것을 받아들이는 것입니다.

+0

감사합니다. 이것에 시간을 내 주셔서 감사합니다. – Chaos