我可以使用以下代码将一些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以外的东西粘贴到剪贴板?
由于
答案 0 :(得分:0)
我最终使用System.Net.WebUtility.HtmlEncode来填充我的目的,以编码ascii代码中的每个字符。 Excel能够理解此代码。这是一个例子(基本连接)
<Data ss:Type=""String"">" & System.Net.WebUtility.HtmlEncode(MyTextwithéë) & "</Data>
在这种情况下,ASCII复制粘贴就足够了。