2016-12-27 21 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になります。

私のお勧めは、相互運用性が優れていることと、賛否両論に同意していることを受け入れることです。

+0

ありがとうございます。私はこれにあなたの時間を感謝します。 – Chaos

関連する問題