Мой сценарий выполняет итерацию по большому количеству данных в файле .xlsx и, в зависимости от того, существует или нет файл, создает/открывает файл в отношении набора данных, в котором он сейчас работает.Создает ли CreateTextFile условие гонки над OpenTextFile?
код, который обрабатывается определения того, следует ли FileSystemObject
создать/открыть текстовый файл в конечном итоге вызывает часть данных, которые будут повторяться в начале текста файла. После изменения работы с одним файлом не было повторений, означающих, что логика, которая обрабатывает извлечение данных, прекрасна.
Set excel = CreateObject("Excel.Application")
Set excelWorkbook = excel.Workbooks.Open("C:\data.xlsx")
Set excelSheet = excelWorkbook.Worksheets(1)
Set fso = CreateObject("Scripting.FileSystemObject")
id = ""
sum = 0
row = 2
Do While row < 40500
'identifier located in column c
id = excelSheet.Range("C" & row).value
'followed by numbers in column h
'column h is empty on the row of an id
Do While Len(excelSheet.Range("H" & row+1).value) > 0
sum = excelSheet.Range("H" & row+1).value + sum
row = row + 1
Loop
WriteToText id,row,sum
sum = 0
row = row + 1
Loop
Sub WriteToText(x, y, z)
fileName = "C:\file" & x & ".txt"
If fso.FileExists(fileName) Then
Set file = fso.OpenTextFile(fileName, 8)
file.WriteLine x & " " & y " " & z
file.Close
Else
Set file = fso.CreateTextFile(fileName)
file.WriteLine x & " " & y " " & z
file.Close
End If
End Sub
Является ли это результатом не освобождая пространство памяти, как только создается текстовый файл, обрабатывается, и закрывается?
Set file = Nothing
... в результате чего буфер, созданный с CreateTextFile
сохраняться через память раз OpenTextFile
называется?
О чем говорит '! Eof'? Это даже допустимый синтаксис? – Lankymart
Это псевдокод. Мне не приходило в голову, что это недействительный синтаксис в vbscript, поскольку я в основном работаю на C/C++. Вы можете предположить, что у меня есть правильное условие, которое определяет, когда оно достигнет конца данных. –
Если вы хотите предоставить псевдокод, пожалуйста, укажите его в вопросе, в идеале, чтобы помочь вам решить проблему, нам понадобится [mcve], акцент на «полный». Как @ ansgar-wiechers [упоминания] (http://stackoverflow.com/a/41663176/692942) - * «Не видя, откуда берутся ваши данные, и как вы его тянете, не сообщается, откуда могут появляться дубликаты данных». Мы не можем сделать это с неполными примерами. – Lankymart