Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
19 / 20 / 8
Регистрация: 27.11.2010
Сообщений: 323
1

Поиск и замена слова в файле Excel

25.11.2013, 18:59. Показов 5708. Ответов 8
Метки нет (Все метки)

Я задался вопросом Как лучше реализовать замену определенного слова в файле Excel.
Например у нас в файле есть слова {fam} {name} {otch} {tel}
Соответственно найти и заменить их на Фамилию Имя Отчество и Телефон
1 Страница это лист формата А4
Скажу для чего это нужно: Для того чтобы не менять код программы постоянно а просто изменить положение слова в файле (что то на подобие шаблона)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2013, 18:59
Ответы с готовыми решениями:

Поиск и замена слова в .txt файле
Здравствуйте, столкнулся с такой задачей- необходимо в файлах .txt в строках, где первое поле =...

Поиск, замена и удаление символов в ТХТ файле
Доброго времени суток. Подскажите как можно осуществить замену и удаление определенных наборов...

Поиск текста в файле и замена его на новый
1. Есть файл, в нем описаны замены аа -> bb ссс -> jjj мама -> дядя 2. Есть исходный файл, в...

Поиск определенного слова в строке и замена определенного символа после этого слова
Представим что у нас есть следующая строка: "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася...

8
Заблокирован
27.11.2013, 01:03 2
1 Страница это лист формата А4
Может, тогда Вам нужен не Excel, а Word?
В Excel, во-первых, ячейки, во-вторых, количество никак не укладывается в A4.

В любом случае, используйте COM-объекты Word и Excel, получайте весь текст из ячеек/со страницы, ищите в нём заданное слово и заменяйте своим.
Может быть, есть какой-то способ вызвать диалог "Заменить" в режиме "Заменить все".
Но всё это разговор долгий, поэтому надо либо гуглить самому, либо достаточно понятно излагать темы.
0
19 / 20 / 8
Регистрация: 27.11.2010
Сообщений: 323
27.11.2013, 12:50  [ТС] 3
В Excel можно указать разделение на страницы формата А4 проверено

нашел способ но он мне не особо нравиться
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public void ExcelOpenSpreadsheets()
        {
 
            try
            {
 
                Excel.Application excelApp = new Excel.Application();
 
                 excelApp.Visible = true;
 
                string workbookPath = @"D:\Excel.xlsx";
 
                Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
 
                Excel.Sheets excelSheets = excelWorkbook.Worksheets;
 
                string currentSheet = "Sheet1";
 
                Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet);
 
                Regex nExpression = new Regex(@"fam", RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
 
 
                Excel.Range currentFind = null;
                Excel.Range firstFind = null;
 
                object missing = Type.Missing;
 
                currentFind = excelWorksheet.Cells.Find("{fam}", missing,
                Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,
                Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
                missing, missing);
                while (currentFind != null)
                {
                    if (firstFind == null)
                    {
                        firstFind = currentFind;
                    }
 
                    else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
                          == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
                    {
                        break;
                    }
 
                    string cellValue = "";
 
                    if (currentFind.Value != null)
                    {
                        cellValue = currentFind.Value.ToString();
                    }
                    
                    cellValue = cellValue.Replace("{fam}", "Фамилия");
 
                    currentFind.Value2 = cellValue;
                            
                    currentFind = excelWorksheet.Cells.FindNext(currentFind);
                }
 
            }
 
            catch (Exception ee)
            {
 
                MessageBox.Show("Exception: " + ee);
 
            }
 
        }
то есть он сначала ищет совпадение в ячейке записывает ее в переменную и заменяет ячейку

есть 2 вариант но он не подходит
C#
1
excelWorksheet.Cells.Replace("fam", "00120098", Excel.XlLookAt.xlWhole, Excel.XlSearchOrder.xlByColumns, false, Type.Missing, false, false);
замена осуществляется, но!
поиск по всей ячейки а не по части ячейки
например ячейку
{fam}
а вот ячейку
Привет {fam} тута
не найдет
1
7 / 7 / 2
Регистрация: 29.12.2015
Сообщений: 27
17.10.2016, 02:16 4
Дело все в параметре.
VB.NET
1
2
3
4
5
  Dim oExcel As New Excel.Application
        Dim fileName As String = "Docs\test.xlsx"
        oExcel.Workbooks.Open(fileName)
        oExcel.Cells.Replace("[#ТЕСТ]", "1", Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByColumns, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False)
        oExcel.Visible = True
Как я понял Excel.XlLookAt.xlWhole - искать ячейку целиком.
Excel.XlLookAt.xlPart - а это искать конкретный текст в ячейке.
0
19 / 20 / 8
Регистрация: 27.11.2010
Сообщений: 323
17.10.2016, 11:35  [ТС] 5
Ну может быть спустя 2 года это кому то поможет =)
1
2 / 2 / 1
Регистрация: 09.03.2010
Сообщений: 21
29.11.2016, 22:40 6
Спасибо помогло, но только частично. Замена не происходит в объединенных ячейках. Только в обычных.
1
19 / 20 / 8
Регистрация: 27.11.2010
Сообщений: 323
30.11.2016, 15:26  [ТС] 7
В объединенных тоже должен производить
на сколько помню при объединении должна обрабатываться верхняя левая ячейка
т.е. в ней будет текст

Добавлено через 38 секунд
В объединенных тоже должен производить
на сколько помню при объединении должна обрабатываться верхняя левая ячейка
т.е. в ней будет текст
0
2 / 2 / 1
Регистрация: 09.03.2010
Сообщений: 21
26.12.2016, 13:33 8
С установленным Excel 2013 по крайней мере не работало.
0
19 / 20 / 8
Регистрация: 27.11.2010
Сообщений: 323
28.12.2016, 01:51  [ТС] 9
работал в 2003 ексель xlsx
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2016, 01:51

Поиск слова в файле
Есть файл в котором N строк, нужно ввести из консоли слово и что б вернуло номера строк от1 до n в...

Поиск слова в файле
:cry:ПОМОГИТЕ!! очень срочно надо! Вобщем: 1.сначала получаем из текстбокса слово. 2. в файле...

Поиск слова в PDF файле
Мне необходимо найти определённое слова в PDF - файле. Нашла библиотека iTextSharp - в инете...

Поиск слова в текстовом файле
Написать программу реализующую поиск слова в массиве. Создать событие, при котором при нажатии...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru