Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Работа с Word: закрашивание ячейки


Автор: Console1 26.2.2012, 16:45
На входе имеется word -ий документ(таблица 100 строк, 6 столбцов). Таблица заполнена, также есть массивы (полученные раньше), matr_zaprosov ( на которые есть ответ на запрос к системе) и matr_null ( нет ответа). В них содержатся номера строк из этой таблицы.

Необходимо закрасить в строке ячейку ( в данном случае i - строка и 2 столбец), т.е. есть ответ - делаем гиперссылку на эту строку и этот столбец, нет красим в красный цвет.

Проблема - всё получается, но до перехода в новое окно(т.е. таблица занимает 4 вордовских окна, в 1 окне всё красится, но как только переходим в следующее окно --- беда)

Как решить эту проблему, заранее спасибо 


Word.Application ThisApplication = new Microsoft.Office.Interop.Word.Application();
            Word.Document Doc = new Microsoft.Office.Interop.Word.Document();
            Object fileName = s;
            Object confirmConversions = Type.Missing;
            Object writeOnly = Type.Missing;
            Object addToRecentFiles = Type.Missing;
            Object passwordDocument = Type.Missing;
            Object passwordTemplate = Type.Missing;
            Object revert = Type.Missing;
            Object writePasswordDocument = Type.Missing;
            Object writePasswordTemplate = Type.Missing;
            Object format = Type.Missing;
            Object encoding = Type.Missing;
            Object visible = Type.Missing;
            Object openConflictDocument = Type.Missing;
            Object openAndRepair = Type.Missing;
            Object documentDirection = Type.Missing;
            Object noEncodingDialog = Type.Missing;
            Object missing = System.Type.Missing;
            Object missingValue = Type.Missing;
            Object oMissingReference = Type.Missing;
            Object Missing = Type.Missing;
 
            ThisApplication.Documents.Open(ref fileName,
            ref confirmConversions, ref writeOnly, ref addToRecentFiles,
            ref passwordDocument, ref passwordTemplate, ref revert,
            ref writePasswordDocument, ref writePasswordTemplate,
            ref format, ref encoding, ref visible, ref openConflictDocument,
            ref openAndRepair, ref documentDirection, ref noEncodingDialog);
            Doc = ThisApplication.Documents.Application.ActiveDocument;
            for (int i = 0; i < matr_zaprosov.Length; i++)
            {
                object unita = Word.WdUnits.wdLine;
                object extenda = Word.WdMovementType.wdMove;
                object counta = matr_zaprosov[i] - 1;
                ThisApplication.Selection.MoveDown(ref unita, ref counta, ref extenda);
                object unit = Word.WdUnits.wdCell;
                object extend = Word.WdMovementType.wdMove;
                object count = 1;
                ThisApplication.Selection.MoveRight(ref unit, ref count, ref extend);
                ThisApplication.Selection.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdGreen;
                Object address = @"C:\Ответ\" + matr_zaprosov[i].ToString() + ".doc";
                Object oRange = ThisApplication.Selection.Range;
                ThisApplication.Selection.Hyperlinks.Add(oRange, ref address,
                    ref oMissingReference, ref oMissingReference, ref oMissingReference,
                    ref oMissingReference);
                object unitas = Word.WdUnits.wdStory;
                object extendas = Word.WdMovementType.wdMove;
                ThisApplication.Selection.HomeKey(ref unitas, ref extendas);
            }
            for (int i = 0; i < matr_null.Length; i++)
            {
                object unita = Word.WdUnits.wdLine;
                object extenda = Word.WdMovementType.wdMove;
                object countaq = matr_null[i] - 1;
                ThisApplication.Selection.MoveDown(ref unita, ref countaq, ref extenda);
                object unit = Word.WdUnits.wdCell;
                object extend = Word.WdMovementType.wdMove;
                object count = 1;
                ThisApplication.Selection.MoveRight(ref unit, ref count, ref extend);
                ThisApplication.Selection.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdRed;
                object unitas = Word.WdUnits.wdStory;
                object extendas = Word.WdMovementType.wdMove;
                ThisApplication.Selection.HomeKey(ref unitas, ref extendas);
            }
            Object saveChanges = Word.WdSaveOptions.wdSaveChanges;
            Object originalFormat = Type.Missing;
            Object routeDocument = Type.Missing;
            ThisApplication.Quit(ref saveChanges, ref originalFormat, ref routeDocument);

Автор: HoTMetaL 1.3.2012, 12:57
Выложи весь исходник. Лучше в архиве. И научись комментировать код.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)