Создание текстового файла из базы excel
Уважаемые знатоки!
помогите написать bat файл по следующим условиям:
Есть текстовый файл, состоящий из 10 строк:
[0]
name=ХХХХХ
bdate=23.05.1969
btime=08:00:00
event=Таймер
photo=
RunOnce=0
cmd=
ScanDays=5
Color=
И есть база данных в формате excel состоящая из трех столбцов - номер, фио и дата.
Необходимо чтобы при запуске бат файла копировался блок строк(10+пустая) из текстового файла, вставлялся в конец этого файла при этом заменял значения полей [0], name=, bdate= на значения из файла базы excel и так до окончания заполненных строк в базе excel.
Спасибо!)
|
Код:
Param(
$pathXls = "C:\База.xlsx",
$pathTxt = "C:\bm.txt"
)cls
$i=2;$a = gc $pathTxt -To 10;$Excel = New-Object -ComObject Excel.Application
$WorkBook=$Excel.Workbooks.Open($pathXls);$WorkSheet=$WorkBook.Sheets.Item(1)
do{
$b=$a;$i++;$b+=''
$b[0] = "[$($Worksheet.Range("b$i").text)]"
$b[1] = "name=$($Worksheet.Range("c$i").text)"
$b[2] = "bdate=$($Worksheet.Range("d$i").text)"
if ($( $Worksheet.Range("b$i").text ) -eq '')
{break}$b|Add-Content $pathTxt
}
while($true);$Excel.Quit();notepad $pathTxt
|
VBS
Код:
FileInTxt = "Z:\Box_In\TxtBlanc.txt"
FileInBas = "Z:\Box_In\База.xlsx"
FileOut = "Z:\Box_Out\База.txt"
MRep = Array("^\[.*\] *", "B3", _
"name=", "C3", _
"bdate=", "D3")
LRep = LBound(MRep)
URep = UBound(MRep)
Set Book = CreateObject("Excel.Application")
Book.Visible = False 'True ' False '
Book.Workbooks.Open FileInBas
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fIn = FSO.OpenTextFile(FileInTxt, 1, False)
InTxt = Trim(fIn.ReadAll)
fIn.Close
If Right(InTxt, 2) <> vbCrLf Then InTxt = InTxt + vbCrLf
Set F = FSO.CreateTextFile(FileOut, True)
Skip = ""
With CreateObject("VBScript.RegExp")
.IgnoreCase = True
j = 0
Do
If Trim(Book.Range(MRep(LRep + 1)).Offset(j, 0)) = "" Then Exit Do
For i = LRep To URep Step 2
If i = LRep Then
.Pattern = MRep(i) + vbCrLf
InTxt = .Replace(InTxt, "[" + CStr(Book.Range(MRep(i + 1)).Offset(j, 0)) + "]" + vbCrLf)
Else
.Pattern = vbCrLf + MRep(i) + ".*" + vbCrLf
InTxt = .Replace(InTxt, vbCrLf + MRep(i) + CStr(Book.Range(MRep(i + 1)).Offset(j, 0)) + vbCrLf)
End If
Next
j = j + 1
F.Write Skip + InTxt
Skip = vbCrLf
Loop
End With
F.Close
'Book.ActiveWorkbook.Close
Book.Quit
|
Время: 12:41.
© OSzone.net 2001-