Страница: 1 |
|
Вопрос: VBS: Поиск и замена в коде html-файла по условию
|
Добавлено: 20.06.10 18:29
|
|
Автор вопроса: whitebear
|
Доброго времени суток всем!
Исходное: есть html файл (периодический отчет), отдельные значения в котором требуется разово редактировать - увеличивать на 18%.
вот почти живой пример отчета http://slil.ru/29364220
наглядно - требуется увеличивать на 18% следующие показатели:
-в "Сводная страница счета" ( в начале):
-- Периодические услуги
-- НДС
-- Итого:
- далее по тексту, в "Расходы расчетного периода" у каждого номера
-- Всего получено
-- Итого
т.к. манипуляцию приходится делать постоянно, то хотелось бы ее максимально автоматизировать
Прошу помочь - написать скрипт для обработки файла.
(считаю что оптимальным будет редактировать именно код html)
ps возможно такой метод (VBS) не самый оптимальный, можно предложить другие решения, которые можно использовать в дальнейшем без дополнительных манипуляций на компе.
зы2 сам я нуб (( азы программирования остались в далеком детстве, поэтому просьба удочку не предлагать, т.к. пока поймаю рыбу умрут все =)
Заранее благодарен откликнувшимся
Ответить
|
Номер ответа: 2 Автор ответа: Just
Вопросов: 4 Ответов: 330
|
Профиль | | #2
|
Добавлено: 21.06.10 10:53
|
для работы этого скрипта надо изменить кодировку твоего html
(в обычном блокноте, с UTF-8 в ANSI, после работы скрипта - обратно)
-
- Dim fso, MyFile, SkipString, alltxt, txt
- Set fso = CreateObject("Scripting.FileSystemObject")
- Set MyFile = fso.OpenTextFile("Invoice.html", 1, False)
- SkipString = 0
-
- MsgBox "Поиск..."
- Do While MyFile.AtEndOfStream <> True
- txt = MyFile.ReadLine
-
-
- If SkipString < 1 Then
-
-
- If InStr(txt, ">Периодические услуги<") > 0 Then
- SkipString = 1
- ElseIf InStr(txt, ">Телефонные услуги<") > 0 Then
- SkipString = 1
- ElseIf InStr(txt, " НДС") > 0 Then
- SkipString = 2
- ElseIf InStr(txt, ">Итого:<") > 0 Then
- SkipString = 1
- ElseIf InStr(txt, ">Итого <") > 0 Then
- SkipString = 1
- ElseIf InStr(txt, ">Всего получено<") > 0 Then
- SkipString = 2
- End If
-
- Else
-
-
- SkipString = SkipString - 1
- If SkipString = 0 Then
- If InStr(txt, "text-align:right;") > 0 Then
- txt = ReplaceString(50, txt)
- ElseIf InStr(txt, "padding-right:1mm;") > 0 Then
- txt = ReplaceString(67, txt)
- ElseIf InStr(txt, "width: 14.25%;") > 0 Then
- txt = ReplaceString(82, txt)
- ElseIf InStr(txt, "text-align: right;") > 0 Then
- txt = ReplaceString(30, txt)
- End If
- End If
-
- End If
-
-
- alltxt = alltxt & txt & vbCrLf
- Loop
-
- Set MyFile = fso.CreateTextFile("Invoice2.html")
- MyFile.Write alltxt
- MyFile.Close
-
-
-
-
-
- Set fso = Nothing
- Set MyFile = Nothing
- MsgBox "Поиск завершен!"
- WScript.Quit
-
-
-
-
- Function ReplaceString(StartSearching, ReplacingString)
- Dim RetLeft, RetRight, StringBefore, StringAfter
- RetLeft = InStr(StartSearching, ReplacingString, ">")
- If RetLeft > 0 Then RetRight = InStr(RetLeft, ReplacingString, "<"): RetLeft = RetLeft + 1
- If RetRight > 0 And (RetRight - RetLeft) > 0 Then
- StringBefore = Mid(ReplacingString, RetLeft, RetRight - RetLeft)
-
- If IsNumeric(StringBefore) = True Then
- If CDbl(StringBefore) > 0 Then
- StringAfter = CDbl(StringBefore) * 1.18
- StringAfter = Round(StringAfter, 4)
- ReplacingString = Replace(ReplacingString, StringBefore, StringAfter)
- End If
- End If
- End If
- ReplaceString = ReplacingString
- End Function
вообще можно поменять параметры поиска по 1 строке, но я подумал, что так надежнее будит... скрипт довольно таки медленный, но рабочий! будит желание, оптимизируешь скорость.
будут вопросы - пиши
Ответить
|
Страница: 1 |
Поиск по форуму