Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
2 / 2 / 1
Регистрация: 28.01.2015
Сообщений: 22
1

Разбить цикл записи на отрезки по 1000 строк в каждый новый файл

15.03.2015, 22:00. Просмотров 462. Ответов 2
Метки нет (Все метки)

Господа, подскажите плж следующую весчь.
имеется цикл строковой записи в файл.
Строк например 15000
Нужно разбить цикл записи на отрезки по 1000 строк в каждый новый файл.
не могу переопределитm streamWriter, не хватает знаний

vb.net
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
Dim OffersStream As StreamWriter = New StreamWriter(fleName, False, System.Text.Encoding.UTF8)
Dim catalogueCSV As String = "kat" & TimeOfDay
Dim offersCSV As String = "off" & TimeOfDay
Dim extName As String = ".csv"
Dim folderCSV As String = "CSV\"
 
            OffersStream.WriteLine("IE_XML_ID;IE_NAME;IE_PREVIEW_TEXT;IE_DETAIL_TEXT;IP_PROP27;IP_PROP28;")
            For q = 0 To OffersGrid.Rows.Count - 2  '// q примерно равен 15-17 тысяч
                If q = 1000 Then
                    ' КАК быть тут? Нужно закрыть этот поток и открыть новый со следующим порядковым именем
                    OffersStream.Close()
                    fleName = "CSV\" & offersCSV & nextNameNum & extName
                    Dim OffersStream As StreamWriter = New StreamWriter(fleName, False, System.Text.Encoding.UTF8)
                    nextNameNum += 1
                    fleName = offersCSV & nextNameNum & extName
                    ReDim OffersStream(fleName, False, System.Text.Encoding.UTF8)
 
                End If
                KatStroke = clear_text(OffersGrid(0, q).Value) _
                    & ";" & clear_text(OffersGrid(1, q).Value) _
                    & ";" & clear_text(OffersGrid(2, q).Value) _
                   
               OffersStream.WriteLine(KatStroke)
               offersStroke = ""
 
            Next
            OffersStream.Close()
        End If
примного благодарен.

Добавлено через 2 часа 45 минут
В общем решил сам. Все спасибо за мысленную поддержку.
На изящность не претендую, но работает.

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Circles = Math.Ceiling(OffersGrid.Rows.Count / CInt(CircleSize.Text)) 'CircleSize.Text=1000
            For w = 0 To Circles
                fleName = (folderCSV & offersCSV & w.ToString & extName)
                Dim OffersStream As New StreamWriter(fleName, False, System.Text.Encoding.UTF8)
                For q = 0 To 1000
                    If t = OffersGrid.Rows.Count - 1 Then
                        OffersStream.Close()
                        Exit For
                    End If
                    KatStroke = clear_text(OffersGrid(0, t).Value) _
                    & ";" & clear_text(OffersGrid(1, t).Value) _
                   ...
                    & ";" & clear_text(OffersGrid(4, t).Value) _
                    & ";" & "RUB"
 
                    OffersStream.WriteLine(KatStroke)
                    offersStroke = ""
 
                    t += 1
                Next
                ' MsgBox(fleName)
                OffersStream.Close()
            Next
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2015, 22:00
Ответы с готовыми решениями:

Как Excel документ, в котором 10000 строк, разбить по 10 строк и сохранить каждые 10 строк в отдельный файл
Здравствуйте. Подскажите как Excel документ в котором 10000 строк разбить по 10 строк и сохранить...

Разбить строки на n символов и переписать всё в новый файл...
var t,f:text; t1,t2: string; a:char; n,i:integer; BEGIN t1:='G:\t.txt'; ...

Разбить график на отрезки
Есть график. Это характеристика асинхронного двигателя. Есть ли возможность программно разбить...

Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл
Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл. Переписать в...

2
7723 / 4178 / 1660
Регистрация: 11.02.2013
Сообщений: 8,944
16.03.2015, 07:32 2
Да, без пол-литры тут не разобраться. Ну хорошо, что решил. А тебе критично выводить всё это дело в CSV? OffersGrid — это DataGridView? Предложу так это сделать:
vb.net
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
''' <summary>
''' Запись в файл с разбивкой по количеству строк
''' </summary>
''' <param name="filename">Базовое имя файла</param>
''' <param name="n">Количество строк в каждом файле</param>
''' <remarks></remarks>
Sub WriteToFile(ByVal filename As String, ByVal n As Integer)
    Dim nameWithoutExt As String = filename.Substring(0, filename.LastIndexOf("."))
    Dim ext As String = filename.Substring(filename.LastIndexOf("."))
    Dim newFileName As String = filename
    Dim i As Integer = 0 'счётчик строк
    If (OffersGrid.RowCount > n) Then
        newFileName = String.Format("{0}_{1}{2}", nameWithoutExt, i + 1, ext)
    End If
    'Внешний цикл записи в файл, который формирует новый поток для записи
    While i < OffersGrid.RowCount
        Using sw As New StreamWriter(newFileName, False, System.Text.Encoding.UTF8)
            'Внутренний цикл записи, который прерывается по заданному числу строк
            While i < OffersGrid.RowCount
                'пишем в файл заданное кол-во строк
                sw.WriteLine("строка для записи")
                'На индексе кратном i выход из цикла
                If (i <> 0 AndAlso i Mod (n - 1) = 0) Then
                    Exit While
                End If
                i += 1
            End While
        End Using
        i += 1
        'Меняем счётчик у имени файла
        newFileName = String.Format("{0}_{1}{2}", nameWithoutExt, i \ n + 1, ext)
    End While
End Sub
3
2 / 2 / 1
Регистрация: 28.01.2015
Сообщений: 22
16.03.2015, 15:37  [ТС] 3
Спасибо за совет.
Увы без CSV никак это парсер XML выгрузки товаров для импорта в битрикс.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2015, 15:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл согласно своему варианту. Dev C++
8)В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра.

каталог разбить на каждый файл на 5 равных частей;каждую 2-ую часть размножить и все вывести
Создать папку images в нее скопировать все изображения;каталог разбить на каждый файл на 5 равных...

Разбить документ на отдельные файлы и переименовать каждый файл используя слияние. Поправить код
Здравствуйте! Пытаюсь провернуть мейл мердж. Получил общий документ со всеми письмами, но не...

Записать каждую строку в каждый новый файл
Помогите с задачкой : В командной строке вводится любая информация, она записывается в файл....

Сессия каждый раз записывается в новый файл
Настройки сессий следующие: &lt;?php session_start(); echo &quot;Сессия: &quot;.$_SESSION; $_SESSION =...

Как разбить шкалу на одинаковые отрезки
Помогите пожалуйста может кто алгоритм какой знает. Дана шкала в диапозоне . Как её разбить на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.