我使用Microsoft的DocumentFormat.OpenXML庫生成OpenXml。我很想弄清楚如何將這個文檔放到我的剪貼板中,以便我可以將數據粘貼到Excel中(就像它是從Excel複製的)。當我從Excel中複製時,我能夠看到OpenXml格式化的數據來自Excel。我需要做相反的事情,從WPF應用程序中複製出來,然後使用高級Excel格式粘貼到Excel中(因此需要使用OpenXML)。如何將OpenXML放到剪貼板上以便粘貼到Excel中?
這裏是我到目前爲止的代碼段:
MemoryStream documentStream = new MemoryStream();
SpreadsheetDocument spreadsheet = SpreadsheetDocument.Create(documentStream, SpreadsheetDocumentType.Workbook, true);
// create the workbook
spreadsheet.AddWorkbookPart();
Stream workbookStream = spreadsheet.WorkbookPart.GetStream();
spreadsheet.WorkbookPart.Workbook = new Workbook(); // create the worksheet
spreadsheet.WorkbookPart.AddNewPart<WorksheetPart>();
spreadsheet.WorkbookPart.WorksheetParts.First().Worksheet = new Worksheet();
...
const string SPREADSHEET_FORMAT = "XML Spreadsheet";
Clipboard.SetData(SPREADSHEET_FORMAT, clipboardData);
在ClipSpy *顯示格式爲* XML,但但是,它不是您聲稱的OpenXML扁平封裝格式 - 如果仔細觀察,您會注意到它實際上是2003 XML格式,而不是2007年(及更高版本)的OpenXML扁平封裝格式。這兩種格式不可互換。 – BrainSlugs83 2013-06-13 03:11:41
@ BrainSlugs83還使用SpreadsheetML格式。但是SpreadsheetML不支持圖像,您可以在工作表之間複製/粘貼圖像。所以他們也以某種方式提供XLSX。 – 2013-06-13 14:13:49
支持圖像的剪貼板對象提供了其他格式 - 這些格式都不是OpenXML扁平包,也不是OpenXML二進制包(zip文件)。儘管有一些Biff格式 - 其中之一是「Biff12」,其中包含一個xlsb(非OpenXML zip文件;可以使用打包API打開,但它包含二進制文件而不是XML)。我還沒有看到剪貼板中的任何OpenXML格式。 – BrainSlugs83 2013-06-14 00:15:34