以下に、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
おかげで、要するに カオス
XMLに変換すると言えば、SpreadsheetMLまたはXML Spreadheetsを指していますか? – strongbutgood
私はそれらのフォーマットが何であるか正確にはわかりません。 Excel内から「名前を付けて保存」オプションを使用した場合に得られるものと一致するXMLファイルを取得しようとしています。 – Chaos
それでは、最初にスプレッドシートに(ActiveWorkbook.XmlMaps(1)によって取得された)XMLマップをどのように取得していますか?最初にいくつかのXMLをExcelにインポートしているのですか、プログラムで地図を追加していますか? – strongbutgood