шестнадцатеричное значение 0x07, является недопустимым символом

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

В настоящее время я работаю над преобразованием из таблицы Word в часть таблицы HTML (до преобразования в CALS), но моя проблема кажется повторяющейся ошибкой, которая говорит:

hexadecimal value 0x07, is an invalid character

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

Я пытался использовать что-то вроде

string newContent = content.Replace((char)(0x1F), Convert.ToChar(""));

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

Возможно, я делаю что-то неправильно в том смысле, что пытаюсь сохранить HTML внутри XElement. Но я не думаю, что это вызывает проблему?!

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

Вот мой код

        private  void dealWithTables()
            {

            try
            {
                foreach (Table tb in doc.Tables)
                {

                    for (int r = 1; r <= tb.Rows.Count; r++)
                    {
                        for (int c = 1; c <= tb.Columns.Count; c++)
                            {
                                try
                                {
                                    Cell cell = tb.Cell(r, c);
                                    foreach (Paragraph paragraph in cell.Range.Paragraphs)
                                    {
                                       Tagging2(paragraph.Range, "P", paragraph.Range.Text);
                                    }
                                     Tagging2(cell.Range, "TD");   
                                }
                                catch (Exception e)
                                {
                                    if (e.Message.Contains("The requested member of the collection does not exist."))
                                    {
                                        //Most likely a part of a merged cell, so skip over.
                                    }
                                    else throw;
                                }
                            }

                            try
                            {
                                Row row = tb.Rows[r];
                                Tagging2(row.Range, "TR");    
                            }
                            catch (Exception ex)
                            {
                                bool initialTrTagInserted = false;
                                int columnsIndex = 1;
                                int columnsCount = tb.Columns.Count;
                                while (!initialTrTagInserted && columnsIndex <= columnsCount)
                                {
                                    try
                                    {
                                        Cell cell = tb.Cell

    (r, columnsIndex);
                                    //cell.Range.InsertBefore("<TR>");
                                    initialTrTagInserted = true;
                                }
                                catch (Exception e)
                                {
                                }
                                columnsIndex++;
                            }

                            columnsIndex = tb.Columns.Count;
                            bool endTrTagInserted = false;
                            while (!endTrTagInserted && columnsIndex >= 1)
                            {
                                try
                                {
                                    Cell cell = tb.Cell(r, columnsIndex);
                                    //cell.Range.InsertAfter("</TR>");
                                    endTrTagInserted = true;
                                }
                                catch (Exception e)
                                {
                                }
                                columnsIndex--;
                            }
                        }
                    }
                        Tagging2(tb.Range, "Table");    

                    object separator = "";
                    object nestedTable = true;
                    tb.ConvertToText(separator, nestedTable);

                }

             }
            catch (Exception ex) 
            { 
                MessageBox.Show(ex.Message); 
            }


        }

 XElement tableTree = new XElement("table");

        public void Tagging2(Range range, string tagName, string content)
        {
            string newContent = content.Replace((char)(0x1F), Convert.ToChar(""));

            tableTree.Add(new XElement(tagName, newContent));
            MessageBox.Show("text of para " + newContent);

        }
        public void Tagging2(Range range, string tagName)
        {
            tableTree.Add(new XElement(tagName));
        }

person Can'tCodeWon'tCode    schedule 23.12.2015    source источник
comment
content.Replace((char)(0x07), (char)(0x20)) ? Кажется, вы заменяете его пустой строкой   -  person Rubens Farias    schedule 23.12.2015
comment
Из здесь кажется, что 0x07 является меткой конца ячейки ИЛИ меткой конца строки: метка конца ячейки: символ с шестнадцатеричным значением 0x07, который используется для обозначения конца ячейки в таблице.   -  person Matthew Watson    schedule 23.12.2015
comment
@RubensFarias спасибо. Это позволяет мне двигаться вперед. Здорово.   -  person Can'tCodeWon'tCode    schedule 23.12.2015
comment
@MatthewWatson, спасибо за это - это объясняет характер и его значение. Я не сталкивался с этим раньше, но я никогда раньше не писал о преобразовании таблиц (и, надеюсь, никогда больше).   -  person Can'tCodeWon'tCode    schedule 23.12.2015


Ответы (1)


Кажется, вы заменяете его пустой строкой, поэтому ваше сообщение об ошибке. Попробуйте заменить его пробелом:

content.Replace((char)(0x07), (char)(0x20))
person Rubens Farias    schedule 23.12.2015