С C # возможно ли поместить объект в буфер обмена, который будет вставлен в Excel как данные и формулы? - PullRequest
0 голосов
/ 01 сентября 2010

В приложении WPF мне нужно сгенерировать данные, которые можно поместить в буфер обмена и вставить в Excel. Мне нужно вставить что-то, что может переносить данные и формулы.

Я пытался OpenXML ... но я не уверен, что это работает.

В настоящее время я пытаюсь создать необработанный «Spreadsheet ML» (это отличается от OpenXML?)

В любом случае, если бы кто-нибудь мог предоставить мне несколько указателей ... или еще лучше, C #, который фактически помещает такие данные в буфер обмена, я был бы очень признателен!

Я разместил здесь еще более конкретный вопрос: Как мне вставить OpenXML в буфер обмена, чтобы он вставлялся в Excel?

Ответы [ 3 ]

1 голос
/ 25 мая 2011

Это не может быть сделано. Недавно я проходил через это с Microsoft (служба поддержки и команда разработчиков Office), и Office не будет принимать какой-либо формат OpenXML из сторонних приложений. Для Word вам нужно использовать RTF, а для Excel / PPT вам нужно использовать HTML.

Но мы попытались продублировать то, что Word копирует / вставляет в себя, и не получит его из стороннего приложения, даже если это единственный предлагаемый формат. И М.С. подтвердила нам это поведение.

1 голос
/ 04 сентября 2010

Я думаю, что ответ НЕТ. Это, конечно, было так. Попробуйте этот простой тест, используя средство просмотра буфера обмена 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 Spreadsheet», это сработает! И даже настраивает форум, если вы вставляете в другой ряд. Вот это да. это ново и опрятно. Так что ... ДА, если вы используете этот формат. Похоже, это просто обычный текст, содержащий XML с верхней части. Вам необходимо зарегистрировать «XML Spreadsheet» в качестве личного формата данных.

0 голосов
/ 05 апреля 2013

Фобис, попробуйте следующую статью: Ссылка

Тогда вы можете использовать этот код, посмотрите тег 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>

Это работает для меня.

...