gpt4 book ai didi

c# - 如何将 OpenXML 放到剪贴板上以便将其粘贴到 Excel 中?

转载 作者:太空狗 更新时间:2023-10-29 23:42:09 24 4
gpt4 key购买 nike

我正在使用 Microsoft 的 DocumentFormat.OpenXML 库生成 OpenXml。我想弄清楚如何将此文档放入我的剪贴板,以便我可以将我的数据粘贴到 Excel 中(就好像它是从 Excel 中复制的一样)。当我从 Excel 中复制时,我能够看到 OpenXml 格式的数据来自 Excel。我需要执行相反的操作,从 WPF 应用程序中复制出来,然后使用高级 Excel 格式粘贴到 Excel 中(因此需要 OpenXML)。

这是我目前所拥有的片段:

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);

最佳答案

我手动构造了 XML(不是通过 OpenXML),已被 excel 接受。

关于 header 的一些有趣的细节:

注意第二行。

我要发送的完整 XML(用于测试):

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s21">
<NumberFormat ss:Format="Currency"/>
</Style>
<Style ss:ID="s22">
<Interior ss:Color="#FFFF00" ss:Pattern="Solid"/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet2">
<Table ss:ExpandedColumnCount="256" ss:ExpandedRowCount="65536"
x:FullColumns="1" x:FullRows="1" ss:DefaultRowHeight="13.2">
<Row>
<Cell>
<Data ss:Type="String">test</Data>
</Cell>
<Cell ss:StyleID="s21">
<Data ss:Type="Number">1.12</Data>
</Cell>
<Cell>
<Data ss:Type="Number">1.1213</Data>
</Cell>
<Cell ss:StyleID="s21">
<Data ss:Type="Number">12.12121</Data>
</Cell>
<Cell ss:StyleID="s22">
<Data ss:Type="String">test</Data>
</Cell>
</Row>
</Table>
</Worksheet>
</Workbook>

将其发送到剪贴板的代码 (VB.Net):

Dim xml As String = File.ReadAllText("excel.xml")

Dim xmlStream As Stream = New MemoryStream()
xmlStream.Write(System.Text.ASCIIEncoding.ASCII.GetBytes(xml), 0, xml.Length)
Clipboard.SetData("XML Spreadsheet", xmlStream)

关于c# - 如何将 OpenXML 放到剪贴板上以便将其粘贴到 Excel 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3614871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com