2014-09-25 54 views
1

我一些Excel中的数据(XML格式)粘贴到这个代码剪贴板:XML电子表格副本在vb.net剪贴板特殊字符

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

我使用System.Net.WebUtility.HtmlEncode编码ASCII码字符每个终于填补我的目的。 Excel能够理解此代码。下面是一个例子(具有基本级联)

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

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