2010-09-01 77 views
0

在WPF應用程序中,我需要生成可以放在剪貼板上並粘貼到excel中的數據。我需要粘貼一些可以攜帶數據和公式的東西。使用C#可以在剪貼板上放置一個對象,將數據和公式粘貼到excel中?

我正在嘗試OpenXML ......但我不確定這是否奏效。

我目前正在試圖使原始「電子表格ML」(這是比OpenXML的不同?)

無論如何,如果任何人都可以給我一些指點...或者更好的,C,實際上把這種#剪貼板上的數據,我將不勝感激!

我貼在這裏另外更具體的問題:How do I get OpenXML onto the clipboard so that it will paste into Excel?

回答

1

我認爲答案是沒有的。情況確實如此。 嘗試這個簡單的測試,使用Windows XP剪貼板查看器(clipbrd.exe),您可以從任何XP系統抓取到Vista/Windows7上運行。

1) Copy from Excel. Just a few cells, as you don't want to crash anything. 
2) In clipbrd.exe, save as a file. Call it xl.clp It may take awhile, as it will force 1) 3) Excel to render all clipboard formats. 
4) Close Excel 
5) Press PrintScreen to wipe the clipboard. 
6) Open Excel again 
7) In clipbrd.exe, open xl.clp 
8) Paste into Excel. 
Did you get your forumulas back? I expect not 

啊等等,還有更多!我剛剛在Excel 2009上試了一下。如果我粘貼,我會得到純文本版本。但是,如果我做一個選擇性粘貼,並選擇「XML電子表格」,它的工作原理!如果你粘貼到另一行,它甚至會調整論壇。哇。這是新的,整潔。 所以...你可以,如果你使用這種格式。它看起來只是包含靠近頂部的XML的純文本。您需要將「XML Spreadsheet」註冊爲私有數據格式。

+0

我已經知道出站(從Excel)的作品。這就是我首先發現這一點的方式。我無法將它恢復到Excel中。我會試試這個,讓你知道。 – Phobis 2010-09-03 23:40:17

+0

沒錯,但Excel有大約24個出站格式,除此之外,沒有一個入站非常有用,CSV除外,但沒有公式。我的測試證明XML Spreadsheet格式是有用的入站。你應該全部設置。 – 2010-09-04 02:55:27

+0

我試過你說的。我正在運行Windows 7,所以我不得不使用一些其他程序來查看/保存剪貼板。我能夠將相同的數據放回剪貼板,但我無法修改數據並使其工作。在某些地方必須存在表示數據大小的地方。無論如何,我需要一個更明確的解決方案。這有點幫助,但我仍然無法通過C#讓剪貼板接受這種格式,我甚至無法使用剪貼板應用程序更改數據,並讓它接受Excel中的粘貼。 – Phobis 2010-09-04 14:46:51

1

它不能完成。我最近通過微軟(支持Office開發團隊的&),Office不會接受來自第三方應用程序的任何OpenXML格式。對於Word,您需要使用rtf,而對於Excel/PPT,則需要使用html。

但是我們嘗試複製Word自己複製/粘貼的內容,即使它是唯一提供的格式,也不會從第三方應用程序獲取。 MS爲我們證實了這一行爲。

0

Phobis,嘗試在接下來的文章: Link

然後你可以使用此代碼,看標籤SS:公式。

<Table ss:ExpandedColumnCount="4" ss:ExpandedRowCount="3" x:FullColumns="1" 
    x:FullRows="1" ss:DefaultColumnWidth="60" ss:DefaultRowHeight="15"> 
    <Row ss:Index="2"> 
    <Cell ss:Index="2"><Data ss:Type="String">A</Data></Cell> 
    <Cell><Data ss:Type="String">B</Data></Cell> 
    <Cell ss:Formula="=CONCATENATE(RC[-2],RC[-1])"><Data ss:Type="String">AB</Data></Cell> 
    </Row> 
    <Row> 
    <Cell ss:Index="2"><Data ss:Type="Number">1</Data></Cell> 
    <Cell><Data ss:Type="Number">2</Data></Cell> 
    <Cell ss:Formula="=SUM(RC[-2]:RC[-1])"><Data ss:Type="Number">3</Data></Cell> 
    </Row> 
    </Table> 

這對我很有用。

相關問題