XML电子表格复制到vb.net中具有特殊字符的剪贴板

时间:2014-09-25 10:23:31

标签: xml vb.net excel clipboard

我可以使用以下代码将一些Excel数据(XML电子表格格式)粘贴到剪贴板:

Dim textToPaste as String = GetMyXMLFormattedText()

Dim dataobj As New DataObject 
Dim xmlStream as new IO.MemoryStream()
xmlStream.Write(System.Text.ASCIIEncoding.ASCII.GetBytes(textToPaste), 0, textToPaste.Length)
dataObj.SetData("XML Spreadsheet", xmlStream)

Clipboard.SetDataObject(dataObj)

其中textToPaste类似于

<?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"
...
</Worksheet>
</Workbook>

此示例有效,但如果我的文档中有特殊字符,如“é”,我会得到一些“?”。 我尝试使用其他格式来编写我的流,如

System.Text.UTF32Encoding.UTF32.GetBytes 

和许多其他可用,或者在TextToPaste上使用GetByteCount的技术,但是当我尝试粘贴到Excel时,我总是收到一个错误,告诉我我无法粘贴这些数据。

是否可以使用XML电子表格格式将除ASCII以外的东西粘贴到剪贴板?

由于

1 个答案:

答案 0 :(得分:0)

我最终使用System.Net.WebUtility.HtmlEncode来填充我的目的,以编码ascii代码中的每个字符。 Excel能够理解此代码。这是一个例子(基本连接)

<Data ss:Type=""String"">" & System.Net.WebUtility.HtmlEncode(MyTextwithéë) & "</Data>

在这种情况下,ASCII复制粘贴就足够了。