Как можно поместить условие в цикл?
Я новичок и самоучка в любом случае
Я планирую экспортировать свои данные из моего datagridview в excel с помощью цикла но то что я хочу это когда когда цикл достигнет заданного состояния другие данные должны быть помещены в другую строку ячеек в excel
вот пример, когда я экспортирую свои данные в excel
|___A__|___B_____|____C___|__D____|___E___|_________F___________| _ 1 I want to go out inside my house _ 2 He want to go out From his School _ 3 _ 4 _
Но то, что я хочу, это вот так в моем excel
|___A ____|___B___|___C___|___D_____________|____E____|__F__| _ 1 I want _ 2 He want _ 3 _ 4 to go out inside my house _ 5 to go out From his School _
вот мой код, Пожалуйста, помогите мне.
Private Sub ExportingEdited() If ((DataGridView1.Columns.Count = 0) Or (DataGridView1.Rows.Count = 0)) Then Exit Sub End If Dim columnCollection As DataGridViewColumnCollection = DataGridView1.Columns Dim currentVisibleColumn As DataGridViewColumn = columnCollection.GetFirstColumn(DataGridViewElementStates.Visible) Dim lastColumnExported As DataGridViewColumn = currentVisibleColumn Dim visibleColumnCount As Integer = columnCollection.GetColumnCount(DataGridViewElementStates.Visible) Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet Dim misValue As Object = System.Reflection.Missing.Value xlApp = New Microsoft.Office.Interop.Excel.Application With {.Visible = True} xlWorkBook = xlApp.Workbooks.Add(xlPath) xlWorkSheet = CType(xlWorkBook.Sheets("sheet1"), Microsoft.Office.Interop.Excel.Worksheet) For r = 0 To DataGridView1.Rows.Count - 1 'Reset values' currentVisibleColumn = columnCollection.GetFirstColumn(DataGridViewElementStates.Visible) lastColumnExported = currentVisibleColumn For c = 2 To visibleColumnCount + 1 Dim value = DataGridView1.Rows(r).Cells(currentVisibleColumn.Index).Value If value IsNot vbNullString Then xlWorkSheet.Cells(r + 58, c) = value.ToString() End If currentVisibleColumn = columnCollection.GetNextColumn(lastColumnExported, DataGridViewElementStates.Visible, DataGridViewElementStates.None) lastColumnExported = currentVisibleColumn Next Next xlWorkSheet.SaveAs(CType(xlPath, String)) xlWorkBook.Close() xlApp.Quit() releaseObject(xlApp) releaseObject(xlWorkBook) releaseObject(xlWorkSheet) Dim p As ProcessStartInfo = New ProcessStartInfo(CType(xlPath, String)) Process.Start(p) End Sub
Что я уже пробовал:
Я попробовал это сделать
Private Sub ExportingEditedspecificrow() If ((DataGridView1.Columns.Count = 0) Or (DataGridView1.Rows.Count = 0)) Then Exit Sub End If Dim columnCollection As DataGridViewColumnCollection = DataGridView1.Columns Dim currentVisibleColumn As DataGridViewColumn = columnCollection.GetFirstColumn(DataGridViewElementStates.Visible) Dim lastColumnExported As DataGridViewColumn = currentVisibleColumn Dim visibleColumnCount As Integer = columnCollection.GetColumnCount(DataGridViewElementStates.Visible) Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet Dim misValue As Object = System.Reflection.Missing.Value xlApp = New Microsoft.Office.Interop.Excel.Application With {.Visible = True} xlWorkBook = xlApp.Workbooks.Add(xlPath) xlWorkSheet = CType(xlWorkBook.Sheets("sheet2"), Microsoft.Office.Interop.Excel.Worksheet) For r = 0 To DataGridView1.Rows.Count - 1 'Reset values' currentVisibleColumn = columnCollection.GetFirstColumn(DataGridViewElementStates.Visible) lastColumnExported = currentVisibleColumn For c = 2 To visibleColumnCount + 1 Dim value = DataGridView1.Rows(r).Cells(currentVisibleColumn.Index).Value If value IsNot vbNullString Then xlWorkSheet.Cells(r + 58, c) = value.ToString() If c = 7 Then For a = 0 To DataGridView1.Rows.Count - 1 'Reset values' currentVisibleColumn = columnCollection.GetFirstColumn(DataGridViewElementStates.Visible) lastColumnExported = currentVisibleColumn For b = 2 To visibleColumnCount + 1 value = DataGridView1.Rows(a).Cells(currentVisibleColumn.Index).Value If value IsNot vbNullString Then xlWorkSheet.Cells(a + 67, b) = value.ToString() End If Next Next End If End If currentVisibleColumn = columnCollection.GetNextColumn(lastColumnExported, DataGridViewElementStates.Visible, DataGridViewElementStates.None) lastColumnExported = currentVisibleColumn Next Next xlWorkSheet.SaveAs(CType(xlPath, String)) xlWorkBook.Close() xlApp.Quit() releaseObject(xlApp) releaseObject(xlWorkBook) releaseObject(xlWorkSheet) Dim p As ProcessStartInfo = New ProcessStartInfo(CType(xlPath, String)) Process.Start(p) End Sub
но вот что получилось в результате получилось вот так
|___A__|___B_____|____C___|__D____|___E___|_________F___________| _ 1 I want to go out inside my house _ 2 He want to go out From his School _ 3 _ 4 I I I I I I _ 5 I I I I I I _
Richard MacCutchan
И что же? Что случилось?
Member 13890537
Здравствуйте Мистер Ричард И Доброе Утро
Я уже обновляю этот пост. Пожалуйста, вы можете мне помочь
Richard MacCutchan
Строка 1: Поместите первые два слова первой строки данных.
Строка 2: Поместите первые два слова второй строки данных.
Строка 3: ничего
Строка 4: Поместите последние слова первой строки данных.
Строка 5: Поместите последние слова второй строки данных.
Итак, если номер строки меньше 3, скопируйте слово 1 в столбец 1, а слово 2-в столбец 2.
Если строка равна 3, ничего не делайте
Если строка больше 3, скопируйте слова от 3 до N в Столбцы от 1 до N-2
Member 13890537
Доброе утро и хорошего Вам дня мистер
Спасибо Вам за это, но как я могу это сделать?
можете ли вы привести мне пример кода?
Richard MacCutchan
Не совсем, потому что я не совсем уверен, какую реальную проблему вы пытаетесь решить. Поскольку у вас есть эти данные в DataGridView, они должны поступать из какого-то другого источника, поэтому, возможно, было бы проще отправить их в Excel из исходного источника.
Member 13890537
данные поступают из моего доступа к базе данных, который я создал, а затем данные загружаются в мой datagridview, когда загружается моя форма. затем я создал кнопку, которая будет экспортировать данные из моего datagridview в excel.
Richard MacCutchan
Поэтому используйте исходные данные, разбейте каждую строку на нужные Вам части и поместите в соответствующие ячейки листа excel.