私はOpen XML SDKのXMLマッピングを使用してExcelにXMLデータをインポートしようとしていました。OpenXMLでXMLマッピングを使用してxmlをインポート
私はExcel Interopを使用してこれを行う例は複数ありますが、SDKは使用していません。副次的なこととして、私はこれをWordファイルで使用していますが、Excel(WordのCustomXmlPart、ExcelのCustomXmlMappingPart)ではプロシージャが同じではありません。
多分SDKを直接使用することはできません。回避策は名前付き範囲を使用するかもしれませんが、それほど実用的ではありません。
編集: このシナリオでは、データを埋め込むための「テンプレート」として、XMLマッピング(記述されているように作成されたhttps://support.office.com/en-us/article/Import-XML-data-6eca3906-d6c9-4f0d-b911-c736da817fa4?ui=en-US&rs=en-US&ad=US)を持つExcelファイルを使用しています。顧客名、現在の日付なども可能です。
私はこれに類似したものを試しました。 Wordとは対照的に、マッピングはCustomXmlMappingsPartに表示されます。
using (var fileStream = File.Open(@"c:\temp\test.xslx", FileMode.Open))
{
SpreadsheetDocument excelDoc = SpreadsheetDocument.Open(fileStream, true);
// Only one mapping
// When doing this for word, there is a document.MainDocumentPart.CustomXmlParts
var mapping = excelDoc.WorkbookPart.GetPartsOfType<CustomXmlMappingsPart>().FirstOrDefault();
XNamespace mappingNS = "http://demoimport.org/xmlimport";
var xmlData = new XElement(mappingNS + "ImportRoot",
new XElement(mappingNS + "Customer", "Test Customer Name"));
XmlReader reader = xmlData.CreateReader();
reader.MoveToContent();
using (MemoryStream ms = new MemoryStream())
{
xmlData.Save(ms);
ms.Position = 0;
// Corrupts the file
// Probably due to CustomXmlMappingsPart
mapping.FeedData(ms);
}
}
あなたが試したことと動作しなかったことを示してから、特定の質問をしてください。あなたが達成しようとしていることを正確に理解することは非常に難しいです。ありがとうございました。 –
ありがとう、私はちょっとした文脈で投稿を編集しました – Adrian