Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 1
Регистрация: 28.01.2015
Сообщений: 23

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

15.03.2015, 22:00. Показов 976. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.03.2015, 22:00
Ответы с готовыми решениями:

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

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

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

2
 Аватар для ViterAlex
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
16.03.2015, 07:32
Да, без пол-литры тут не разобраться. Ну хорошо, что решил. А тебе критично выводить всё это дело в 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
Сообщений: 23
16.03.2015, 15:37  [ТС]
Спасибо за совет.
Увы без CSV никак это парсер XML выгрузки товаров для импорта в битрикс.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2015, 15:37
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru