Webアプリでサーバー側のC#からExcelのXMLマップ機能を使用したいと思います。XMLマップを使用すると、XMLスキーマをブックに関連付け、スキーマのどの部分にどのセルをマップするかを指定できます。そこから、XMLファイルをインポートしてセル値を更新し、最新の値を含むXMLをエクスポートできます(つまり、手動で変更されている場合)。これは、Excelの[開発者]タブで手動で行うことができます。
Aspose Cellsのライセンスはすでに持っていますが、(この分野での最近の作業にもかかわらず)XMLマップを完全にはサポートしていないようです。誰かがこれで成功しましたか?
Excel Interopを使用してテストを作成しました。これは機能します(つまり、プログラムでXMLマップを設定し、値のインポートとエクスポートの両方に使用できます)。要約すると、次のようになります。
XmlMap map = workbook.XmlMaps.Add(xmlSchema, Missing.Value);
// map cell C3 to the question text
var worksheet = (Worksheet)workbook.Worksheets[1];
Range cell = (Range)worksheet.Cells[3, 3];
cell.XPath.Clear(); // just in case
cell.XPath.SetValue(map, "/Root/Question/Text", Missing.Value, false);
// import the XML to populate the mapped cells
map.ImportXml(xmlData, true);
ただし、Excelプロセスをバックグラウンドで実行することに依存しているため、サーバーでの使用にはあまり適していません。
MicrosoftのOpenXMLSDKを使用して、XMLマップを介してXMLをインポートまたはエクスポートすることは可能ですか?Mapクラスを見つけましたが、これは既存のマップのメタデータを表しているだけだと思います。SDKにはこの種の変換ロジックが含まれていますか、それともワークシートのコンテンツをクラスとして表すだけですか?