2014-09-25 38 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複製粘貼就足夠了。