Создать комментарий в Excel из HTML-источника - PullRequest
2 голосов
/ 02 сентября 2011

Итак, можно создать файл Excel из HTML.И я обнаружил, что возможны многие вещи, такие как добавление изображений, форматирование и т. Д. С помощью всего лишь нескольких настроек CSS.

Однако сейчас я пытаюсь сделать так, чтобы появился маленький комментарий красного треугольника.

Я создал пустой файл Excel, содержащий только комментарии, но сгенерированный html - беспорядок.И я уверен, что многое из этого излишне.Кто-нибудь сделал это, или знает, как я могу заставить его работать?

Было бы неплохо, если бы оно было так просто, как <td title="comment">text</td>, но это не так.

РЕДАКТИРОВАТЬ: У меня есть необходимые основы, чтобы html отображал комментарий при загрузке в Excel, урезанный до этого ... Мне просто нужно посмотреть, смогу ли я урезать vml до чего-то более простого.

Похоже, что ссылка на ячейку, к которой она подключена, такова: 0 0

Теперь мне просто нужно правильно расположить ее, изначально

Я думаю, что это минимум, и я добавил второй комментарий, слегка изменив HTML.

Но, если вы можете помочь сократить это до минимума, это было бы очень полезно

<html xmlns:v="urn:schemas-microsoft-com:vml"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns="http://www.w3.org/TR/REC-html40">
<body>
    <table>
        <tr>
            <td>cell 1</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
            <td>cell 3</td>
        </tr>
    </table>

    <div style='mso-element:comment-list'>
        <div style='mso-element:comment'>
            <!--[if gte mso 9]>
            <xml>
             <v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
              <v:stroke joinstyle="miter"/>
              <v:path gradientshapeok="t" o:connecttype="rect"/>
             </v:shapetype>
             <v:shape id="_comment1" type="#_x0000_t202" 
                    style='width:96pt;height:55.5pt;z-index:1;visibility:hidden' 
                    fillcolor="infoBackground [80]" o:insetmode="auto">
              <v:textbox style='mso-direction-alt:auto'/>
              <x:ClientData ObjectType="Note">
               <x:Row>0</x:Row>
               <x:Column>0</x:Column>
              </x:ClientData>
             </v:shape>
             <v:shape id="_comment2" type="#_x0000_t202" 
                    style='width:96pt;height:55.5pt;z-index:1;visibility:hidden' 
                    fillcolor="infoBackground [80]" o:insetmode="auto">
              <v:textbox style='mso-direction-alt:auto'/>
              <x:ClientData ObjectType="Note">
               <x:Row>1</x:Row>
               <x:Column>3</x:Column>
              </x:ClientData>
             </v:shape>
            </xml>
            <![endif]-->
            <div v:shape="_comment1" >
                This is a comment
            </div>
            <div v:shape="_comment2" >
                This is another comment
            </div>
        </div>
    </div>
</body>
</html>

Ответы [ 3 ]

2 голосов
/ 02 сентября 2011

Нет простого способа, который я смог определить. Но вот сложный способ:

  1. Возьмите ваш простой HTML-файл и откройте его в Excel.
  2. Добавить комментарий к ячейке.
  3. Сохраните его, сохранив формат html.

Причина, по которой это не так просто, заключается в том, что Excel фактически делает в этот момент создание папки, содержащей некоторые файлы поддержки и новую версию исходных файлов - по сути, HTML-представление файла Excel. Если вы повторно откроете этот файл с файлами поддержки на месте, вы получите свой комментарий.

Это говорит о том, что существует предполагаемый html-формат (хотя он не существует в одном файле), который дает вам ваш комментарий, и вам просто нужно перепроектировать его.

Так возможно ли это? Да. Стоит ли это хлопот? Что ж, учитывая, что Microsoft никогда не писала ничего из ста строк кода, которые они не могли бы написать тысячами - почти наверняка нет.

Мне любопытно, что еще вы смогли сделать в этом направлении. Я сделал этот ответ в вики сообщества, чтобы вы могли поделиться им, если вам интересно.

1 голос
/ 02 сентября 2011

Я думаю, что это минимум, и я добавил второй комментарий, слегка изменив HTML.

<html xmlns:v="urn:schemas-microsoft-com:vml"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns="http://www.w3.org/TR/REC-html40">
<body>
    <table>
        <tr>
            <td>cell 1</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
            <td>cell 3</td>
        </tr>
    </table>

    <div style='mso-element:comment-list'>
        <div style='mso-element:comment'>
            <!--[if gte mso 9]>
            <xml>
             <v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
              <v:stroke joinstyle="miter"/>
              <v:path gradientshapeok="t" o:connecttype="rect"/>
             </v:shapetype>
             <v:shape id="_comment1" type="#_x0000_t202" 
                    style='width:96pt;height:55.5pt;z-index:1;visibility:hidden' 
                    fillcolor="infoBackground [80]" o:insetmode="auto">
              <v:textbox style='mso-direction-alt:auto'/>
              <x:ClientData ObjectType="Note">
               <x:Row>0</x:Row>
               <x:Column>0</x:Column>
              </x:ClientData>
             </v:shape>
             <v:shape id="_comment2" type="#_x0000_t202" 
                    style='width:96pt;height:55.5pt;z-index:1;visibility:hidden' 
                    fillcolor="infoBackground [80]" o:insetmode="auto">
              <v:textbox style='mso-direction-alt:auto'/>
              <x:ClientData ObjectType="Note">
               <x:Row>1</x:Row>
               <x:Column>3</x:Column>
              </x:ClientData>
             </v:shape>
            </xml>
            <![endif]-->
            <div v:shape="_comment1" >
                This is a comment
            </div>
            <div v:shape="_comment2" >
                This is another comment
            </div>
        </div>
    </div>
</body>
</html>
0 голосов
/ 09 сентября 2011

Это было так своевременно и весьма ценилось!Я только что реализовал сейчас, и, кажется, работает нормально.Самая большая проблема заключается в том, чтобы предопределить строку и столбец, которые «сгибают» для меня.Я смотрю, можно ли использовать якорь вместо строки и столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...