Я создал XML вручную (не через OpenXML), который был принят в Excel.
Некоторые интересные подробности о шапке:
Обратите внимание на вторую строку.
Полный 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)