Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Не получается вывести строки в консоль и найти заданные строки в документе Word

Ответить
Настройки темы
.NET - [решено] Не получается вывести строки в консоль и найти заданные строки в документе Word

Старожил


Сообщения: 230
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: tumanovalex
Дата: 15-05-2021
Visual Studio 2012, Windows 7. В программе
Код: Выделить весь код
using System;
using System.Configuration;
using Word = Microsoft.Office.Interop.Word;
using System.Collections.Generic;

namespace CsWordCons
{
  class Program
  {
    static void FindString()
    {
      List<string> strArrFind = new List<string> {"111111", "222222", "33333"};
      Object missing = System.Reflection.Missing.Value;
      Object confConv = false;
      Object readOnly = true;
      Object isVisible = false;
      Object saveChanges = false;
      Word.Application word = new Word.Application();
      Word.Document doc = new Word.Document();
      word.Visible = false;
      Word.Table tbl = null;
      Object filename = Environment.CurrentDirectory + "\\Документ 1.docx";
      Console.WriteLine(filename);
      doc = word.Documents.Open(ref filename, ref confConv, ref readOnly);
      try
      {
        tbl = doc.Tables[1];
      }
      catch (Exception ex)
      {
        tbl = null;
        Console.WriteLine("\nВ документе " + filename.ToString() + " нет таблиц!\n");
        Console.ReadKey();
        Environment.Exit(1);
      }
      int numCols = tbl.Columns.Count, numRows = tbl.Rows.Count;
      foreach (string strFind in strArrFind)
      {
        Console.WriteLine("************* Строка для поиска: {0} *************", strFind);
        for (int i = 2; i <= numRows; i++)
        {
          for (int j = 3; j <= numCols; j++)
          {
            Console.WriteLine(tbl.Cell(i, j).Range.Text);
            Console.WriteLine(tbl.Cell(i, j).Range.Text + "  " + strFind);
            if (tbl.Cell(i, j).Range.Text == strFind)
            {
              Console.WriteLine(strFind + "  " + i.ToString() + ", " + j.ToString());
            }
            Console.WriteLine("---------------------------------------");
          } // for j
        } // for i
      } // foreach
      ((Word._Document)doc).Close(ref saveChanges, missing, missing);
      ((Word._Application)word).Quit(ref saveChanges);
    } // FindString()

    static void Main(string[] args)
    {
      FindString();
      Console.ReadKey();
    } // Main
  } //class Program
} // namespace CsWordCons
возникают следующие ошибки:
1. Вывод в консоль Console.WriteLine(tbl.Cell(i, j).Range.Text + " " + strFind); должен, как я понимаю, вывести текст из ячейки таблицы, затем пробелы, затем поисковую строку. На самом деле пропадает строка tbl.Cell(i, j).Range.Text и выводится только сдвинутая поисковая строка.
2. Условие tbl.Cell(i, j).Range.Text == strFind никогда не выполняется (при установке в теле условия точки прерывания захода в тело условия нет).
Помогите, пожалуйста, исправить ошибки. Проект прикрепил.

Отправлено: 15:16, 19-04-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Иллюстрация

Как видите, кроме «9» в Cell().Range.Text входят символы с кодами 0x0d (CR) и 0x07 (BELL). Попробуйте отрезать два символа справа от содержимого ячейки, а затем уже пробуйте выводить или сравнивать с шаблоном.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:28, 19-04-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 230
Благодарности: 2

Профиль | Отправить PM | Цитировать


Извините за невнимательность, всё понял. Спасибо!

Отправлено: 10:42, 20-04-2018 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - [решено] Не получается вывести строки в консоль и найти заданные строки в документе Word

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск строки по слову и добавление новой строки после найденой. Mikhael2011 Скриптовые языки администрирования Windows 17 16-03-2017 03:37
CMD/BAT - Поиск и замена строки в txt файлах по содержанию этой строки. sayyad Скриптовые языки администрирования Windows 1 06-12-2015 13:20
VBS/WSH/JS - [решено] Удаление/добавление строки в документе word Seryoga204 Скриптовые языки администрирования Windows 4 02-02-2015 20:13
PowerShell - [решено] Не получается разделить строки при выводе в файл rudimko Скриптовые языки администрирования Windows 2 15-02-2013 12:29
Ненужные строки в документе.... Maxximus Хочу все знать 11 21-04-2003 19:50




 
Переход