Сохранить таблицу word в html

Сконвертируйте ваши doc-файлы в html онлайн и бесплатно


Перетащите файлы сюда. 100 MB максимальный размер файла или Регистрация

Конвертировать в DOC

doc

Документ Microsoft Word

DOC ― это расширение файлов для документов текстового редактора. Оно связано преимущественно с приложением Microsoft Word. Файлы DOC также могут содержать графики, таблицы, видео, изображения, звуки и диаграммы. Этот формат поддерживается почти всеми операционными системами.

Конвертер HTML

html

Язык гипертекстовой разметки

HTML ― это файл веб-формата. Исходный код HTML можно изменить в текстовом редакторе. HTML-файлы разрабатываются для будущего использования в веб-браузерах пользователей и позволяют форматировать сайты с текстом, изображениями и другими необходимыми материалами. В файлах этого формата используются теги для создания веб-страниц. Интерпретация HTML-кода выполняется веб-браузером, и этот код, как правило, не показывается пользователю.

Как сконвертировать DOC в HTML

Шаг 1

Загрузите doc-файл(ы)

Выберите файлы с компьютера, Google Диска, Dropbox, по ссылке или перетащив их на страницу.

Шаг 2

Выберите «в html»

Выберите html или любой другой формат, который вам нужен (более 200 поддерживаемых форматов)

Шаг 3

Загрузите ваш html-файл

Позвольте файлу сконвертироваться и вы сразу сможете скачать ваш html-файл

Рейтинг DOC в HTML

4.6 (2,216 голосов)

Вам необходимо сконвертировать и скачать любой файл, чтобы оценить конвертацию!

Конвертор ворд в хтмл Проблема конвертации word в html существует, пока существует microsoft word. Все эти дибиляторные стили, типа mso-spacerun:yes, и классы, вроде MsoNormal, а также нагромождение всяческих span style=»font-size:10.0pt» сильно засоряют код.

И это бы все ничего, потому что во многих редакторах есть специальная кнопка «Вставить только текст», которая справляется с очисткой вордовского кода, когда дело касается простого текста.

Но когда доходит до таблицы, тут редакторы бессильны, поскольку вместе с грязным кодом удаляют и ее. Поэтому для облегчения жизни вебмастеров, модераторов и прочих админов, которым по долгу службы или по велению сердца приходится иметь дело с вордовскими таблицами, я размещаю эту то ли утилиту, то ли просто средство борьбы с вордовским кодом.

Теперь вы можете конвертировать таблицу (как, впрочем, и любой вордовский мусор, если у вас нет редактора с функцией «только текст») из MS Word в простой и чистый html-код (ну почти чистый).

Алгоритм

ВНИМАНИЕ! В окно ниже следует вставлять не саму таблицу или текст из ворда, а их код!

Чтобы получить его, сначала вставьте таблицу/текст в наш редактор, затем откройте его html-код, скопируйте и уже затем вставляйте ниже

Итак, пошагово:

1 Откройте документ ворд с нужным вам текстом/таблицей. Скопируйте их (Ctrl+A, Ctrl+С).

2 Откройте наш онлайн-редактор.

3 Вставьте текст/таблицу в основное окно редактора (Ctrl+V).

4 В редакторе нажмите кнопку HTML (редактировать HTML).

5 Скопируйте открывшийся «грязный» код.

6 Вставьте в это окно

Ниже появится чистый html-код (за исключением кучек мусора, вынесенных в начало и конец; их надо удалить руками), который уже можно смело копировать и вставлять на сайт. А еще ниже — предпросмотр того, как результат будет выглядеть на вашей странице (не считая наших стилей).

Предпросмотр:

Виталий Сизов

Постановка задачи

Одна из самых распространенных форм представления информации на Web-страницах — всевозможные таблицы. Особенно часто такие конструкции используются, когда требуется регулярно обновлять информацию. Поскольку таблица — элемент категории block-level, ее достаточно просто заменять, не нарушая общий дизайн страницы.

Но таблицы удобны не только для отображения информации, но и для ее хранения и обработки. Часто источником данных для Web-страниц служат классические приложения Microsoft Office — Word и Excel, обладающие мощными средствами обработки данных. В таких случаях приходится экспортировать таблицы Microsoft Office в таблицы HTML, и, естественно, возникает желание такой экспорт автоматизировать.

Стандартные средства формирования кодов HTML, имеющиеся в Microsoft Office, для профессионального применения не годятся — прежде всего из-за своей избыточности. Эти средства с определенной натяжкой еще можно использовать для первичного формирования страниц, но уж никак не для обновления существующих, хорошо отформатированных документов. В таких документах никакие элементы оформления не требуются, необходимо только воспроизводить структуру и содержание таблиц; а сохранение таких документов заново как Web-страниц средствами Microsoft Office только испортит их, опять добавив избыточные элементы форматирования, от которых с таким трудом избавляются Web-мастеры.

Уточним требования к программе, которой мы будем пользоваться для создания HTML-документов с таблицами. Пусть исходные данные — это таблицы, созданные в одном из приложений Microsoft Office. Структура таблиц может быть произвольной; допускается любое разумное объединение ячеек. Слово «разумное» в данном контексте означает, что таблица изначально была регулярной (свойство Uniform) и к ней применялись операции объединения ячеек. В этом случае таблица будет иметь эквивалентное представление в виде совокупности элементов

<TR> и <TD>

В Excel любая таблица удовлетворяет этим требованиям, а вот в Word — нет. Таблицы Word допускают перемещение границ ячеек в отдельных строках, что в HTML реализуется только в виде отдельной таблицы. Это следует четко осознавать и по возможности в Word не использовать. Как поступать со случайно деструктурированными таблицами Word, будет показано ниже.

В ячейках исходной таблицы могут быть любые элементы, предусмотренные HTML: текст и inline-элементы, с соответствующими тэгами, включая вызовы функций JavaScript.

Результат преобразования — код HTML — необходимо поместить в произвольно заданные места существующего HTML-документа (прототипа). Если исходная таблица велика, что имеет место при работе со списками, целесообразно предусмотреть разбиение таких таблиц на разделы. Чтобы уж совсем усложнить задачу, потребуем пакетной обработки множества различных таблиц.

Экспорт отдельной таблицы Excel

Первый шаг в решении поставленной задачи — разработка процедуры, выполняющей экспорт отдельной таблицы. В качестве источника данных выберем таблицу, помещенную на листе Excel. Таблицы Excel гораздо предпочтительнее таблиц Word и не только потому, что имеют множество встроенных функций. Таблицы Word очень легко незаметно для пользователя деструктурировать: для этого достаточно сдвинуть боковые границы отдельных ячеек по отношению к границам столбцов. В этом случае возникает проблема, как интерпретировать смещенные ячейки. Стандартные процедуры Word при экспорте всегда разбивают такие конструкции на отдельные таблицы, даже если визуально это смещение в документе Word незаметно. Альтернативное решение, «исправляющее» таблицы Word, мы приведем ниже. В таблицах же Excel подобное невозможно. Ячейки можно объединять, но при этом границы столбцов и строк всегда остаются неизменными для всей таблицы.

Помня, что экспорт отдельной таблицы не самоцель, а лишь часть общей задачи, выберем в качестве исходных данных для процедуры объект Range, передаваемый в качестве параметра, или объект Selection. Результат преобразования — строки кода HTML — будем выводить в некий текстовый файл с помощью инструкции Print #.

Нам понадобятся строковые константы, задающие тэги HTML. В зависимости от потребностей пользователя эти константы должны содержать параметры необходимых стилей, выбранных для оформления страницы:

Const TABLE_INNER = "<table cellpadding=""3"" 
cellspacing=""3"">"
Const TR_INNER_ODD = "  <tr class=""lineOdd"">"
Const TR_INNER_EVEN = "  <tr class=""lineEven"">"
Const TD_INNER = "    <td"
Const END_TD = "    </td>"
Const END_TR = "  </tr>"
Const END_TABLE = "</table>"

Как видно из приведенного описания, для тэга

<TR>

предусмотрено два стиля, что позволит по-разному оформлять четные и нечетные строки таблицы.

Сама процедура экспорта таблицы приведена ниже. Единственную сложность в ней представляет анализ объединения ячеек. Выходной файл имеет номер 2 (номер 1 зарезервирован для входного файла — прототипа страницы).

Private Sub MakeTable(objTable As Range)
'-- Make HTML for Table<br>
  Dim objTr As Range      '-- row range
  Dim objTd As Range      '-- cell range
  Dim strTag As String    '-- tag string
  Dim intRow As Integer   '-- row number

  intRow = 0
  Print #2, TABLE_INNER
  For Each objTr In objTable.Rows
    intRow = intRow + 1
    If intRow Mod 2 = 0 Then
      Print #2, TR_INNER_EVEN '-- even row
    Else
      Print #2, TR_INNER_ODD  '-- odd row
    End If
    For Each objTd In objTr.Cells
      strTag = TD_INNER
      If objTd.MergeCells Then
        If objTd.MergeArea.Range("A1").Address = 
objTd.Address Then
          If objTd.MergeArea.Rows.Count > 1 Then
            strTag = strTag & " rowspan=""" & _
                     objTd.MergeArea.Rows.Count & """"
          End If
          If objTd.MergeArea.Columns.Count > 1 Then
            strTag = strTag & " colspan=""" & _
                     objTd.MergeArea.Columns.Count 
& """"
          End If
          strTag = strTag & ">"
          Print #2, strTag & objTd.Value & 
LTrim(END_TD)
        End If
      Else
        strTag = strTag & ">"
        Print #2, strTag & objTd.Value & LTrim(END_TD)
      End If
    Next objTd
    Print #2, END_TR
  Next objTr
  Print #2, END_TABLE
<p>
End Sub

Экспорт совокупности таблиц

Важный частный случай экспорта таблиц — экспорт списков; такие списки необходимо разделять на группы. Современный способ группировки информации — динамические окна (nuggets), допускающие свертывание и развертывание. Конструктивно nugget состоит из двух частей: заголовка с кнопкой maximize/ minimize и тела, помещенного в контейнер

<DIV>

Тело — это отдельная таблица, преобразовывать которую мы уже научились. Теперь, если на исходном листе Excel создать список и разделить его на группы, добавив строки заголовков, отличающиеся форматом или специальным признаком, можно сгенерировать совокупность nuggets. Прежде всего нам понадобятся дополнительные константы, задающие необходимые тэги.

Const TABLE_HEADER = "<table width=""100%"" 
cellpadding=""0"" _
      border=""0"" cellspacing=""0"" 
class=""nuggetHeader"">"
Const TR_HEADER = "  <tr>"
Const TD_HEADER_NAME = "    <td nowrap width=""460"" _
      class=""nuggetTitle"" valign=""center"">  _
      <span class=""nuggetTitleText"">&+VALUE+&</span>
 </td>"
Const TD_HEADER_BUTTON = "    <td nowrap _
      class=""nuggetButtonWrapper"">_
      <img id=""nToggle&+COUNT+&"" 
src=""images/blank.gif"" _
      title=""Click to maximize / minimize"" _
      onClick=""document.all.nContent&+COUNT+& _
      .style.display=document.all.nContent&+COUNT+& _
      .style.display=='none'?'':'none'; _
      if(document.images)this.src=
document.all.nContent&+COUNT+& _
      .style.display=='none'?imgMax.src:imgMin.src; _
      "" WIDTH=""17"" HEIGHT=""17""></td>"
Const DIV_BODY = "<div valign=""top"" 
id=""nContent&+COUNT+&"">"
Const TABLE_BODY_ODD = "<table width=""100%"" 
border=""0"" _
      cellpadding=""0"" cellspacing=""0"" 
class=""nuggetBodyOdd"">"
Const TABLE_BODY_EVEN = "<table width=""100%"" 
border=""0"" _
      cellpadding=""0"" cellspacing=""0"" 
class=""nuggetBodyEven"">"
Const TR_BODY = "  <tr>"
Const TD_BODY_MAIN = "    <td>"
Const END_DIV = "</div>"

Здесь необходимы некоторые пояснения. В некоторых выражениях можно заметить служебные слова VALUE и COUNT, написанные прописными буквами. Эти слова указывают место вставки переменных значений, вычисляемых по ходу обработки списка. Вставка выполняется с помощью функции замены вхождений подстроки в строковое выражение. В Visual Basic for Applications версии Office 2000 такая функция существует и называется Replace. Для совместимости с Microsoft Office 97 применяется пользовательская функция ReplaceString, выполняющая те же действия.

Так же, как и в процедуре преобразования отдельной таблицы, в данном случае предусмотрены два стиля оформления тела: для четных и нечетных nuggets. Полный текст макроса, осуществляющего экспорт списка в виде совокупности таблиц, заключенных в тела nuggets, приведен ниже. Предполагается, что заголовки разделов выполнены полужирным шрифтом, а первый столбец списка используется для нумерации групп.

Private Sub ListLoop()
'-- Loop Across The Single Sheet
  Dim objCurrent As Range '-- current selection
  Dim objArea As Range    '-- hole list
  Dim objHeader As Range  '-- header line
  Dim objBody As Range    '-- body table
  Dim objTemp As Range    '-- work range object
  Dim strTemp As String   '-- work string
  Dim blnSkip As Boolean  '-- header not found

  Set objCurrent = Selection

  Range("A2").Activate    '-- left upper corner

  Set objArea = ActiveCell.CurrentRegion
  Set objArea = objArea.Offset(1, 0).
Resize(objArea.Rows.Count - 1, _
                objArea.Columns.Count)

  objArea.Select          '-- list without title row

  Set objBody = objArea.Offset(0, 1).Resize(1, _
                objArea.Columns.Count - 1)
  blnSkip = True

  '-- Begin
  For Each objTemp In objArea.Rows
    If objTemp.Range("A1").Font.Bold Then
      If objTemp.Range("B1").Address <> _
         objBody.Range("A1").Address Then
        objBody.Select

        '-- Nugget Body
        MakeNuggetBody gintCount, Selection, blnSkip
      End If
      Set objHeader = objTemp.Resize(1, 
objArea.Columns.Count)
      objHeader.Select
      Set objBody = objTemp.Offset(1, 1).Resize(1, _
                    objArea.Columns.Count - 1)

      '-- Nugget Header
      gintCount = gintCount + 1
      MakeNuggetHdr objHeader.Range("B1").Value, gintCount
      blnSkip = False
    Else
      If objTemp.Range("B1").Address <> _
         objBody.Range("A1").Address Then
        Set objBody = objBody.Resize(objBody.Rows.Count 
+ 1, _
                      objBody.Columns.Count)
      End If
      objBody.Select
    End If
  Next objTemp

  '-- Nugget Body Last
  MakeNuggetBody gintCount, Selection, blnSkip

  '-- End
  objCurrent.Select

End Sub

В приведенном макросе используются две вспомогательные процедуры — для формирования заголовка и тела nuggets соответственно. Эти процедуры достаточно просты и в специальных комментариях не нуждаются.

Private Sub MakeNuggetHdr(strItem As String, intItem As Integer)
'-- Make HTML for Nugget Header
  Dim strTemp As String   '-- work string

  Print #2, TABLE_HEADER
  Print #2, TR_HEADER

  '-- Insert Nugget Title
  Print #2, ReplaceString(TD_HEADER_NAME, 
"&+VALUE+&", strItem)

  '-- Insert Nugget Number
  strTemp = intItem
  Print #2, ReplaceString(TD_HEADER_BUTTON, 
"&+COUNT+&", strTemp)
  Print #2, END_TR
  Print #2, END_TABLE

End Sub


Private Sub MakeNuggetBody(intItem As Integer, _
                           objTable As Range, 
blnSkipDiv As Boolean)
'-- Make HTML for Nugget Body
  Dim strTemp As String   '-- work string

  '-- Insert Nugget Number
  If Not blnSkipDiv Then
    strTemp = intItem
    Print #2, ReplaceString(DIV_BODY, "&+COUNT+&", 
strTemp)
  End If
  If intItem Mod 2 = 0 Then
    Print #2, TABLE_BODY_EVEN   '-- even style
  Else
    Print #2, TABLE_BODY_ODD    '-- odd style
  End If
  Print #2, TR_BODY
  Print #2, TD_BODY_MAIN

  '-- Insert Simple Table Code
  MakeTable objTable

  Print #2, END_TD
  Print #2, END_TR
  Print #2, END_TABLE
  If Not blnSkipDiv Then
    Print #2, END_DIV
  End If

End Sub

Отображение кодов HTML в исходном документе

В предыдущих разделах приведены способы формирования HTML-кодов для отдельной таблицы и для списка, порождающего множество таблиц, разделенных на группы. В качестве заполнителя пространства между тэгами

<TD> и </TD>

используется свойство VALUE (тип данных VARIANT) соответствующих ячеек исходного листа Excel. Никакого анализа содержимого ячеек не проводится. Это позволяет удовлетворять требованиям универсальности. В ячейки исходных таблиц, наряду с текстом, числами и формулами, можно поместить произвольные фрагменты HTML-кода, обеспечивая тем самым любые желаемые последствия. Например, можно вставить гиперссылки с параметром target, графические элементы, указать стили или функции JavaScript.

К сожалению, за такую универсальность приходится расплачиваться совершенно неприглядным внешним видом исходного документа. Представьте себе, что в фирменном прайс-листе, в колонке со ссылкой «Buy Now!» окажется длиннющий HTML-код. Такую таблицу не то что напечатать — показать кому-либо страшно.

Естественное решение этой проблемы — заимствовать у гипертекстовых документов две формы представления информации: внешнюю, отображаемую браузером, и внутреннюю — в виде кода HTML. Конечно, вряд ли разумно строить интерпретатор для всех тэгов языка, достаточно ограничиться некоторым замещающим текстом. Строго говоря, для ячеек таблицы, наряду со свойствами VALUE, FORMULA, TEXT, следовало бы доопределить свойство HTML. Однако необходимость обеспечить ввод информации вручную диктует совсем не объектно-ориентированное решение. Это решение сводится к созданию обычной пользовательской функции, одним из параметров которой будет переменная, задающая форму вывода результата — замещающий текст, нужный для отображения ячеек при работе в Excel, или HTML-код, использующийся при экспорте. Другой параметр проектируемой функции также очевиден. Это строка — прототип кода HTML. Здесь мы воспользуемся тем же приемом с замещением, который был применен в процедурах со вставкой идентификаторов при формировании nuggets. В прототипе следует указать позиции подстановки переменных значений с помощью специальных уникальных кодов.

Чтобы сделать функцию универсальной, предусмотрим переменное число параметров, каждый из которых будет размещаться в заданных позициях строки-прототипа. В качестве специальных кодов прототипа можно использовать порядковый номер элемента в массиве параметров. Перед этим номером в прототипе необходимо поместить специальную строку — тэг, отличающий идентификатор подстановки от прочих комбинаций символов в коде HTML. Что касается строки замещения, то пусть ее роль выполняет первый элемент массива. С учетом сказанного текст новой пользовательской функции выглядит следующим образом.

Public Function InlineHTML(blnHTML As Boolean, _
                           strReplaceTag As String, _
                           strHtmlSample As String, _
                           ParamArray varItem() 
As Variant) As String
'-- Make Inline HTML Element
  Dim intI As Integer     '-- item counter
  Dim strOut As String    '-- result string
  Dim strFrom As String   '-- search string
  Dim strTo As String     '-- replace string

  strOut = ""

  '-- Check Show Mode
  If Not blnHTML Then
    '-- Show First Item As Result String
    If UBound(varItem()) > 0 Then
      strOut = varItem(0)
    End If
  Else
    '-- Show HTML Code
    strOut = strHtmlSample
    For intI = 0 To UBound(varItem())
      '-- Replace All "ReplaceTag & I" With Item(I)
      strFrom = strReplaceTag & intI + 1
      strTo = varItem(intI)
      strOut = ReplaceString(strOut, strFrom, strTo)
    Next intI
  End If
  InlineHTML = strOut

End Function

Результаты работы приведенной функции показаны на рисунке. В первой строке списка выводу подлежала строка замещения. Это состояние соответствует параметру blnHTML = 0. Во второй строке выведен весь HTML-код с произведенной подстановкой шести параметров. В этом случае blnHTML = 1. В третьей строке показана сама формула в режиме редактирования. В качестве тэга перед номером параметра в прототипе использован символ «#».

Fig.
Два варианта отображения исходных данных в таблице Excel.

К сожалению, одной этой функции недостаточно. В процессе экспорта таблиц необходимо проверять, имеется ли в текущей ячейке такая формула, а если имеется, то необходимо переключиться в режим отображения HTML, извлечь код, а затем переключиться в «нормальный» режим отображения.

Эти действия выполняет вспомогательная функция, приведенная ниже:

Private Function ReplaceValue(objCell As Range) 
As String
'-- Extract HTML Code For Current Cell
  Dim strOut As String
  Dim strOld As String

  strOut = objCell.Value

  If InStr(1, objCell.Formula, _
     "InlineHTML(0,", vbBinaryCompare) > 0 Then
    '-- Save Formula
    strOld = objCell.Formula

    '-- Update Value With HTML Code
    objCell.Formula = ReplaceString(objCell.Formula, _
                      "InlineHTML(0,", 
"InlineHTML(1,")

    '-- Extract New Value
    strOut = objCell.Value

    '-- Return Formula
    objCell.Formula = strOld
  End If
  ReplaceValue = strOut

End Function

Теперь, чтобы все функции работали вместе, необходимо в процедурах предыдущих примеров заменить в инструкциях Print # операнды получения свойств вида:

Объектная_переменная.VALUE

на функцию вида:

ReplaceValue(Объектная_переменная)

Использование прототипа Web-страницы

Приведенных выше процедур достаточно, чтобы сформировать законченные фрагменты HTML-кода. Осталось вставить их в нужное место Web-страницы. Для этого потребуется исходный HTML документ — прототип и операции ввода-вывода текстовых файлов.

Что касается прототипа, то его следует подготовить традиционными средствами, например, с помощью FrontPage, отметив специальным образом места для вставки необходимых таблиц. Как сделать такие отметки? Воспользуемся способом, применяемым в профессиональной серверной технологии PHP. В позициях, где должна будет появиться таблица, поместим тэги вида

<?php … ?>

(конечно, ради приличия, следует заменить префикс php, например, на vba). Присутствие таких тэгов в обычном HTML-документе никак не сказывается на отображении страниц любым браузером. Страницы можно спокойно проектировать и отлаживать, сообщений об ошибках не последует. Тэги php всегда остаются невидимыми. Внутри такого тэга можно поместить любое указание препроцессору, роль которого в нашем случае будет выполнять Visual Basic for Applications. Если, например, тэг

<?vba include="List1" ?>

обозначает необходимость вставки всех таблиц, расположенных на листе с именем List1 рабочей книги Excel, то, включая его в создаваемый HTML-код прототипа, можно разместить в прототипе указания по формированию кодов для таблиц или списков из различных листов и даже различных документов, созданных средствами Microsoft Office.

На этом подготовку прототипа можно считать законченной и переходить непосредственно к вводу-выводу.

Необходимо заметить, что хотя практически во всех приложениях Microsoft Office имеются стандартные диалоги открытия и сохранения файлов, для работы с файлами формата HTML удобнее пользоваться элементом управления ActiveX — Microsoft Common Dialog Control (COMDLG32.OCX). Программирование в этом случае проще, а окно диалога не содержит «лишних» возможностей.

Окончательный алгоритм работы макроса формирования HTML-документа выглядит следующим образом. Сначала выводится диалог открытия файла-прототипа для чтения. Затем выводится диалог для сохранения файла результата. Файл-прототип читается построчно и копируется в выходной файл. Процесс продолжается до тех пор, пока во входном потоке не встретится тэг вида

<?vba include="SheetName" ?>

В этом случае активизируется указанный лист и выполняется приведенная выше процедура ListLoop. Эта процедура генерирует необходимые строки в выходном потоке. Сам тэг

<?vba..>

в выходной файл не переписывается. По окончании работы ListLoop выбирается следующая строка из входного потока, которая либо просто копируется в выходной файл, либо снова инициирует экспорт информации уже из другого листа книги. Процесс повторяется до конца входного файла. Затем файлы закрываются.

Эта простенькая заключительная процедура, большую часть которой составляют операторы фиксации ошибок при открытии текстовых файлов, приведена ниже:

Public Sub DoIt()
'-- Read Sourse, Replace Include Tags, Make Target
'-- Include Tag Format:
'-- <?vba include="SheetName" ?>
'-- NOTES: Space Before ( ?>) is Binding!
  Dim strTextLine As String   '-- input line
  Dim strListName As String   '-- sheet's name
  Dim strName As String       '-- file name
  Dim strPath As String       '-- file full path
  Dim blnDone As Boolean      '-- RC Common Dialog 
Control

  '-- Show Common Dialog For Open Source
  strName = ""
  strPath = ""

  blnDone = ComDlgFile(strName, strPath, _
            "Select Source File", True)
  If blnDone Then
    On Error Resume Next
    Open strPath For Input As #1
    If Err <> 0 Then
      MsgBox Error$, vbCritical
      Exit Sub
    End If
  Else
    MsgBox "Cancel By User", vbCritical
    Exit Sub
  End If

  '-- Show Common Dialog For SaveAs Target
  strName = ""
  strPath = ""

  blnDone = ComDlgFile(strName, strPath, _
            "Target File Save As", False)
  If blnDone Then
    On Error Resume Next
    Open strPath For Output As #2
    If Err <> 0 Then
      MsgBox Error$, vbCritical
      Exit Sub
    End If
  Else
    MsgBox "Cancel By User", vbCritical
    Exit Sub
  End If

  '-- Clear Global Nuggets Counter
  gintCount = 0

  Do While Not EOF(1) '-- Цикл до конца файла.
    Line Input #1, strTextLine
    If UCase(Left(strTextLine, 15)) <> 
"<?VBA INCLUDE=""" Then
      Print #2, strTextLine
    Else
      strListName = Trim(Mid(strTextLine, 16, _
                    Len(strTextLine) - 19))
      On Error Resume Next
      Sheets(strListName).Select
      If Err <> 0 Then
        MsgBox Error$, vbCritical
        Close #1, #2
        Exit Sub
      Else
        ListLoop
      End If
    End If
  Loop
  Close #1, #2
  MsgBox strPath & " Brewed", vbInformation

End Sub

Таблицы в документах Word

Безусловно, при необходимости профессионально работать с таблицами лучше выбирать Excel. Однако на практике встречаются случаи использования таблиц в документах Word. Некоторое время назад к автору обратилась одна солидная фирма, специализирующаяся на организации обучения иностранным языкам за границей. При создании сайта у них возникла проблема с переносом накопленной информации на Web страницы. Исходная информация — а это были обширные таблицы с расписаниями курсов — содержалась в документах Word. Таблицы имели объединенные ячейки, как по столбцам, так и по строкам. Было очевидно, что с таблицами продолжительное время активно работали, в результате чего их внутренняя структура была полностью разрушена, хотя визуально и при печати таблицы выглядели вполне нормально. Неприятности начинались только при попытках копирования таблиц в другие приложения — FrontPage или Excel — и при попытках сохранять документы в формате HTML. Так, для одной-единственной таблицы Word’97 формировал HTML-документ размером 25 Кбайт; при этом страница в браузере мало напоминала оригинал в Word. Word 2000 справлялся с задачей лучше: результат преобразования больше походил на источник, зато размер HTML-файла становился просто фантастическим — более 100 Кбайт(!) Положение казалось безвыходным, так как таблиц было много, а сроки создания сайта поджимали.

Проблемы были разрешены с помощью небольшого макроса, который формировал HTML-документ размером всего 5 Кбайт, и этот документ полностью удовлетворял требованиям заказчика.

Для решения задачи был применен эвристический подход, который может оказаться весьма полезным при работе с любыми таблицами Word. Суть алгоритма такова — прежде всего определяется максимальная размерность объекта Table. Далее в оперативной памяти создается двумерный массив той же размерности, что и таблица. Этот массив инициализируется специальными значениями, обозначающими свободные ячейки:

intColMax = objTbl.Range.Information
(wdMaximumNumberOfColumns)
intRowMax = objTbl.Range.Information
(wdMaximumNumberOfRows)
ReDim strTblArray(intRowMax, intColMax)
For intRow = 1 To intRowMax
  For intCol = 1 To intColMax
    strTblArray(intRow, intCol) = FILLER
  Next intCol
Next intRow

После подготовки массива проводится «зондирование» исходной таблицы с попыткой извлечь содержимое каждой ячейки. Если ячейки с определенными координатами не существует, возникает ошибка, а соответствующий элемент массива остается неизменным:

For intRow = 1 To intRowMax
  For intCol = 1 To intColMax
    On Error Resume Next
    Set objCell = objTbl.Cell(intRow, intCol)
    If Err.Number = 0 Then
      objCell.Select
      strTmp = Selection.Range.Text
      strTblArray(objCell.RowIndex, _
                  objCell.ColumnIndex) = strTmp
    End If
    Err.Clear
  Next intCol
Next intRow

В результате проделанной операции исходная таблица попросту переписывается в массив. При этом таблица приводится к регулярному виду, известному как свойство Uniform = True. На первый взгляд, в приведенном фрагменте нет ничего примечательного. Но если присмотреться, то можно отметить очень любопытную деталь. Несмотря на то, что зондируется ячейка с координатами intRow и intCol, извлекаемый текст записывается в элемент массива с другими координатами! Эти координаты цели извлекаются из свойств RowIndex и ColumnIndex. Такая особенность объектной модели Word проявляется только при объединении ячеек; для таблицы Uniform координаты совпадают.

Непосредственно HTML-код генерируется уже на основе заполненного регулярного массива, построчно. Параметры ROWSPAN и COLSPAN формируются путем подсчета «пустых» ячеек справа и вниз от текущей позиции:

Print #1, tagTBLBEG

For intRow = 1 To intRowMax
  Print #1, tagTRBEG
  For intCol = 1 To intColMax
    If strTblArray(intRow, intCol) <> FILLER Then
      If intRow = 1 Then
        strTagBeg = tagTHBEG
        strTagEnd = tagTHEND
      Else
        strTagBeg = tagTDBEG
        strTagEnd = tagTDEND
      End If
      intRowSpan = 0
      blnDone = True
      Do While blnDone
        intNext = intRow + intRowSpan + 1
        If intNext <= intRowMax Then
          If strTblArray(intNext, intCol) = 
FILLER Then
            intRowSpan = intRowSpan + 1
          Else
            blnDone = False
          End If
        Else
          blnDone = False
        End If
      Loop
      If intRowSpan > 0 Then
        intRowSpan = intRowSpan + 1
        strTagBeg = Left(strTagBeg, Len(strTagBeg) - 1) _
                    & " ROWSPAN=""" & intRowSpan & """>"
      End If
      intColSpan = 0
      blnDone = True
      Do While blnDone
        intNext = intCol + intColSpan + 1
        If intNext <= intColMax Then
          If strTblArray(intRow, intNext) = 
FILLER Then
            intColSpan = intColSpan + 1
          Else
            blnDone = False
          End If
        Else
          blnDone = False
        End If
      Loop
      If intColSpan > 0 Then
        intColSpan = intColSpan + 1
        strTagBeg = Left(strTagBeg, 
Len(strTagBeg) - 1) _
                    & " COLSPAN=""" & intColSpan & """>"
      End If
      Print #1, strTagBeg & _
                strTblArray(intRow, intCol) & strTagEnd
    End If
  Next intCol
  Print #1, tagTREND
Next intRow

Print #1, tagTBLEND


Загрузить PDF


Загрузить PDF

Преобразовать DOC, DOCX, ODF файлы в формат HTML довольно легко, но здесь есть некоторые нюансы. Если вы хотите создать веб-страницу, которая будет быстро загружаться и правильно отображаться во всех браузерах, используйте онлайн-инструменты. Если вы хотите сохранить формат исходного документа, используйте Word.

  1. Изображение с названием Convert a Word Document to HTML Step 1

    1

    Самый быстрый и простой способ конвертирования – это скопировать и вставить документ Word в конвертер TextFixer или загрузить документ на сайт Online-Convert.com. При помощи этих бесплатных инструментов вы быстро преобразуете документ в формат HTML, но некоторые параметры форматирования документа будут утеряны.

  2. Изображение с названием Convert a Word Document to HTML Step 2

    2

    Если вам нужен многофункциональный инструмент или вас не устраивают результаты работы вышеперечисленных инструментов, попробуйте воспользоваться следующими бесплатными сервисами:

    • Word2CleanHTML – сохраняет большую часть формата исходного документа и создает HTML-страницу, годную для применения в веб-разработке.[1]
      Этот инструмент предлагает настроить параметры конвертирования, например, определить действия с нестандартными символами или пустыми абзацами.
    • Конвертер ZamZar.com позволяет преобразовывать документы как в формат HTML5, так и в устаревший формат HTML4 (он работает в большинстве браузеров и может быть более знаком некоторым пользователям). Для пользования этим инструментом потребуется ввести ваш адрес электронной почты.
  3. Изображение с названием Convert a Word Document to HTML Step 3

    3

    Google Диск. Этот сервис пригодится в том случае, если вы работаете над документом Word совместно с другими пользователями; преобразовав документ в формат HTML, вы можете пригласить ваших коллег посмотреть на результат.[2]

    • Войдите в Google Диск.
    • Нажмите красную кнопку Создать и выберите Документ.
    • Скопируйте текст вашего документа в пустой документ.
    • В меню Google Документы нажмите ФайлСкачать какВеб-страница.
  4. Изображение с названием Convert a Word Document to HTML Step 4

    4

    Если в формат HTML вы хотите преобразовать сотни документов, воспользуйтесь платным программным обеспечением, которое позволяет конвертировать множество файлов за один раз. Вот несколько таких программ:

    • WordCleaner
    • NCH Doxillion

    Реклама

  1. Изображение с названием Convert a Word Document to HTML Step 5

    1

    Откройте документ в Microsoft Word или в OpenOffice. Эти текстовые редакторы могут конвертировать документы в формат HTML, но при этом получаются файлы значительных размеров, а формат текста может не поддерживаться некоторыми браузерами.[3]
    Тем не менее, такой HTML файл легко преобразовать обратно в документ Word для его последующего редактирования.

  2. Изображение с названием Convert a Word Document to HTML Step 6

    2

    Нажмите кнопку «Office» (в левом верхнем углу экрана) или «Файл» (в старых версиях MS Office) и в меню выберите «Сохранить как».

  3. Изображение с названием Convert a Word Document to HTML Step 7

    3

    В выпадающем меню выберите «Веб-страница», чтобы сохранить документ в формате HTML.[4]

    • Если вы не можете найти этот параметр, измените расширение файла на .htm или .html, а имя файла заключите в кавычки: «ExampleFile.html».[5]
  4. Изображение с названием Convert a Word Document to HTML Step 8

    4

    В некоторых версиях Word вы можете сохранить документ в HTML-файле, очень похожем на исходный документ, но который будет загружаться быстрее (как веб-страница). Если вы не планируете конвертировать HTML-файл обратно в докумен Word, выберите «Веб-страница с фильтром».[6]

    • Если эта опция недоступна, сохраните документ в виде «обычной» веб-страницы, а затем воспользуйтесь онлайн инструментом AlgoTech’s Mess Cleaner для преобразования «обычной» веб-страницы в небольшой HTML-файл.

    Реклама

Советы

  • В Word нажмите ВидВеб-документ, чтобы предварительно просмотреть то, как будет выглядеть HTML-файл.

Реклама

Предупреждения

  • Во время преобразования в HTML-файл некоторые параметры форматирования и стиля текста документа Word будут утеряны. Чтобы поправить форматирование текста, воспользуйтесь CSS (это формальный язык описания внешнего вида документа).

Реклама

Об этой статье

Эту страницу просматривали 41 305 раз.

Была ли эта статья полезной?

Назад

Дата публикации: 14.04.2020

Просмотры: 1003

Бочка меда

СДО Collaborator умеет создавать учебные ресурсы из готового документа MS Word. Достаточно загрузить файл DOCX-формата, и система предложит преобразовать его в ресурс типа «Страница». Это существенно экономит время авторам ресурсов.
Порядок действий:

  1. Создать новый ресурс типа «Файл».
  2. Загрузить документ.
  3. После загрузки система спросит «Преобразовать файл в Ресурс-Страницу?» — соглашайтесь.
  4. Сохранить и просмотреть результат.

Результатом будет HTML-ресурс в виде одной страницы, которая быстро загружается и имеет все шансы идеально отображаться на любых устройствах — от десктопа до мобильного телефона.

СДО Collaborator умеет создавать учебные ресурсы из готового документа MS Word.

СДО Collaborator умеет создавать учебные ресурсы из готового документа MS Word.

Ложка дегтя

Но преобразование подразумевает, что при верстке документа DOCX вы пользовались общепринятыми правилами и форматированием, которому существует прямая альтернатива в формате HTML. Если прямого соответствия не будет, то и результат преобразования не сможет соответствовать оригиналу.
Что получится из вашего документа, вы можете легко проверить на сервисах преобразования Word в HTML. Например, этих:

  • Online HTML converter
  • Word to HTML Converter Online. Convert Word to clean HTML — 4html.net
  • WORD to HTML | DOC to HTML

Можно проверить, как сам MS Word справляется с преобразованием своего документа в формат HTML. Попробуйте команду «Файл» — «Сохранить как…» и выберите формат «Веб-страница с фильтром (.htm)».
Если результат будет адекватен оригиналу — то ваш документ отформатирован хорошо.
Абсолютного точного (или максимально близкого к нему) преобразования документа DOCX в другой формат можно добиться только преобразованием в PDF.
Но есть способы сделать документ так, чтобы он конвертировался в HTML без критических искажений.

Лучшие практики форматирования документа MS Word

1. Стили заголовков и текста

стандартные стили заголовков и текста
Используйте стандартные стили заголовков: «Заголовок», «Подзаголовок», «Заголовок 1», «Заголовок 2» и т.д.
Текст набирайте стандартным стилем — «Обычный».
blank

2. Интервалы и отступы

Если нужно для абзацев изменить отступы, поменять интервал, шрифт — изменяйте в тексте. Можно изменять стили, но это не всегда работает.
blank

3. Выравнивание текста

Обычно с этим проблем не бывает. Все преобразуется корректно.
blank

4. Форматирование шрифта

Все обычные способы изменения шрифта — начертание, цвет, размер — будут хорошо преобразовываться. blank

5. Изменение типа шрифта

Шрифт сможет отобразиться правильно только в том случае, если на чужом компьютере будут установлены те же шрифты, что и у вас. Используйте «безопасные шрифты» (узнать больше про безопасные шрифты):
blank

6. Списки

С простыми маркированными и нумерованными списками проблем не должно возникнуть. Иерархические списки тоже неплохо конвертируются, но будут отличия.
blank

7. Вставка картинок

Корректно будут отображаться картинки, вставленные в текст как знак, а не как отдельный объект с возможностью обтекания. На всякий случай проверьте, что настроено в параметрах картинки «Размер и положение» — «Обтекание текстом», должно быть так:
blank
Самый надежный способ — отдельная картинка в отдельном абзаце текста.
blank
Никакие настройки обтекания картинки текстом не дадут хорошего результата. Картинки будут «убегать» со своих мест и игнорировать ваши настройки.
blank
Единственный стабильный случай — это обтекание картинки текстом справа. Вставьте картинку первой в абзаце перед всем текстом и в настройках «Размер и положение» — «Обтекание текстом» выберите стиль обтекания «Квадрат» и обтекание текстом «Справа». Там же дополнительно можно настроить отступы от текста.
blank

8. Изменение размера, оформления и параметров картинок

Вы можете изменять размеры картинок и экспериментировать с другими преобразованиями.
Как правило, простые изменения корректно переносятся в HTML. Но что-то особенное — вряд ли будет распознано правильно.
blank

9. Таблицы

Таблицы конвертируются практически без ошибок.
blank
Если нужно, чтобы таблица растягивалась на всю ширину страницы — установите для нее параметр «Автоподбор по ширине окна». В этом случае лучше делать таблицу как можно проще — без объединённых и разбитых ячеек, преобразование может быть неточным.
blank

Итог

Волшебного средства, что точно преобразовывает любой DOCX в HTML, не существует. И не может быть. Слишком много специфических отличий у этих форматов.
Если вам важна скорость создания учебных ресурсов в СДО и их адаптивность к чтению с мобильных устройств — очищайте и упрощайте форматирование документов, конвертируйте в HTML. У вас будет быстрый и приемлемый результат.
Требуется точное соответствие документу? С этим лучше всего справляется преобразование в формат PDF. Но придется забыть про удобства чтения с экрана смартфона.
Есть время и вдохновение — изучайте верстку HTML документов с помощью правил Bootstrap его альтернатив Bootstrap Alternatives (Top 10 Best Frontend Frameworks).
P.S. У нас есть пример правильно подготовленного Word файла. Его можно брать как шаблон для своих документов. Пройдите на демо-портал LMS Collaborator в Каталог учебных заданий и заберите его по этой ссылке:

Просто взять и скачать.

P.S. Есть предложения, вопросы, замечания, идеи — пишите в комментарии.


Присоединяйтесь к нашему сообществу корпоративного обучения в Facebook и Linkedin, а также подписывайтесь на нашу e-learning рассылку, чтобы получить апрельскую скидку на использование LMS Collaborator по промокоду: LMS2020-04

blank

The LMS Collaborator Team

Content Manager LMS Collaborator

Всі записи автора

Понравилась статья? Поделить с друзьями:
  • Сохранить существующую книгу excel
  • Сохранять эскизы word что это
  • Сохранить строку в файл excel
  • Сохраняет в excel пустую
  • Сохранить страницы word как отдельные документы