Springen naar inhoud


- - - - -
VS 2013 SOLVED

Excel Sheet Genereren Op Basis Van Mdb Bestand Ipv Datagridview.

VS2013 excel mdb access

  • Log in a.u.b. om te beantwoorden
Er zijn 10 reacties in dit onderwerp

#1 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 27 juni 2015 - 10:34

Ik heb onderstaande code die mijn gegeven van een datagridview in een excel bestand zet.
Visual Basic Code:
Public Sub ExcelAfdrukken()
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim i As Integer
Dim j As Integer

xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = CType(xlWorkBook.Sheets(1), Excel.Worksheet)

For i = 0 To Form1.DataGridView1.RowCount - 2
For j = 0 To Form1.DataGridView1.ColumnCount - 1
xlWorkSheet.Cells(i + 1, j + 1) = _
Form1.DataGridView1(j, i).Value.ToString()
Next
Next

xlWorkSheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\ImecDataToExcel.xlsx")
xlWorkBook.Close()
xlApp.Quit()

releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)

MsgBox("U kunt het bestand hier vinden.: " + System.Windows.Forms.Application.StartupPath + "\ImecDataToExcel.xlsx")
End Sub

Eigenlijk wil ik dat hij mij een Excel sheet maakt aan de hand van de datums/dagen die ik wil.
Hiermee bedoel ik dus het volgende:
Er zijn gegevens opgeslagen met datums erbij en nu wil ik die vanaf 1 dag geleden in een excel bestand hebben of van bv de 2 afgelopen.
Hopelijk is mijn vraag een beetje duidelijk :)
Hoe krijg ik dat gerealiseerd?

#2 Hypenate

Hypenate

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1228 berichten
    Laatst bezocht 15 mei 2019 21:27
Inzender

Geplaatst op 28 juni 2015 - 11:29

Kan je dat niet aan de hand doen van een DataView?
En dan ipv
Visual Basic Code:
For i = 0 To Form1.DataGridView1.RowCount - 2
For j = 0 To Form1.DataGridView1.ColumnCount - 1 

een 'for'-loop door de dataview en excel, zodat alles 1 op 1 wordt overgezet.
Je kan ook een Range maken, dan kan je dmv een array een hele rij invullen (gaat vele malen sneller).

#3 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1164 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 28 juni 2015 - 12:24

Bericht bekijkenpascalbianca, op 27 juni 2015 - 10:34, zei:

Ik heb onderstaande code die mijn gegeven van een datagridview in een excel bestand zet.
Begrijp ik het goed dat je dus de data al hebt?
Zo ja, hoe komt die data in je DataGridView?

#4 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 28 juni 2015 - 17:25

Heb het zo opgelost, zonder gebruik te maken van de datagrid.:

Visual Basic Code:
Dim sql As String = ""
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim i As Integer
Dim j As Integer

xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = CType(xlWorkBook.Sheets(1), Excel.Worksheet)


sql = "SELECT * FROM data where DATE between #" & ExcelDatumKeuzes.DateTimePicker1.Value & "# and #" & ExcelDatumKeuzes.DateTimePicker2.Value & "# order by id desc" 'maand/dag/jaar
Dim adapter As New OleDbDataAdapter(sql, VerbindingslinkString)
' Gets the records from the table and fills our adapter with those.
Dim dt As New DataTable("data")
Dim ds As New DataSet
adapter.Fill(ds)

For i = 0 To ds.Tables(0).Rows.Count - 1
For j = 0 To ds.Tables(0).Columns.Count - 1
xlWorkSheet.Cells(i + 1, j + 1) = _
ds.Tables(0).Rows(i).Item(j)
Next
Next

xlWorkSheet.SaveAs(System.Windows.Forms.Application.StartupPath + "\ImecDataToExcel.xlsx")
xlWorkBook.Close()
xlApp.Quit()

releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)

VerbindingsConnectie.Close()

MsgBox("U kunt het bestand hier vinden.: " + System.Windows.Forms.Application.StartupPath + "\ImecDataToExcel.xlsx")
ExcelDatumKeuzes.Close()

Het volgende zou ik ook nog graag hebben maar wilt niet lukken.
Ik heb bij bovenstaande code ook als laatste hier een vraag staan of het bestand geopend moet worden in Excel, maar met de volgende code opent hij niet excel terwijl in taakbeheer hij wel open staat.

Visual Basic Code:
Dim xlsApp As Excel.Application
		Dim xlsWorkBook As Excel.Workbook
		Dim xlsWorkSheet As Excel.Worksheet
		Dim xlsCell As Excel.Range
		' Initialise Excel Object
		xlsApp = New Excel.Application
		' Open test Excel spreadsheet
		xlsWorkBook = xlsApp.Workbooks.Open(System.Windows.Forms.Application.StartupPath + "\ImecDataToExcel.xlsx")
		' Open worksheet (can open by number or name)
		xlsWorkSheet = xlsWorkBook.Worksheets(1) ' You could also do it by name: "sheet1"
		' Read the first cell
		xlsCell = xlsWorkSheet.Range("A1")


#5 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1164 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 28 juni 2015 - 20:06

Bericht bekijkenpascalbianca, op 28 juni 2015 - 17:25, zei:

Het volgende zou ik ook nog graag hebben maar wilt niet lukken.
Ik heb bij bovenstaande code ook als laatste hier een vraag staan of het bestand geopend moet worden in Excel, maar met de volgende code opent hij niet excel terwijl in taakbeheer hij wel open staat.

Je moet de Excel Applicattion Visible maken (vergeet ook niet de applicatie te sluiten):
Visual Basic Code:

		xlsApp = New Excel.Application
		' Tonen
		xlsApp.Visible = True
		
		' .. doe stuff

		' Afsluiten
		xlsApp.Quit()
 



#6 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 03 juli 2015 - 14:09

Hartelijk dank , het werkt super, maar nog  1 vraagje.
Hij opent dus excel en je ziet nu dat hij alle waardes erin plaatst.
Is het mogelijk om na het openen van excel en voor het plaatsen van de data het excel scherm te minimaliseren?

#7 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1164 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 03 juli 2015 - 21:38

Bericht bekijkenpascalbianca, op 03 juli 2015 - 14:09, zei:

Hij opent dus excel en je ziet nu dat hij alle waardes erin plaatst.
Is het mogelijk om na het openen van excel en voor het plaatsen van de data het excel scherm te minimaliseren?
Ja hoor, al zie ik niet zo meteen de meerwaarde van minimized t.o.v. Visible=False.
Maar goed, jij weet waarschijnlijk wel waarom.
Dus:

Visual Basic Code:
	xlsApp.WindowState = Excel.XlWindowState.xlMinimized



#8 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 05 juli 2015 - 06:41

Ik hou mijn vraag ook even hier omdat het om het zelfde onderwerp nog gaat.
Ik gebruik onderstaand stukje code om de gegevens van mijn datagridview naar een excel sheet te kopiëren.
.
Visual Basic Code:
'***Copy entire founded values to Excel sheet***
For i = 0 To ds.Tables(0).Rows.Count - 1
For j = 0 To ds.Tables(0).Columns.Count - 1
xlWorkSheet.Cells(i + 1, j + 1) = ds.Tables(0).Rows(i).Item(j)
Next
Next


Die gegevens bevatten nummers en 4 kleur namen.
Nu gebruik ik het volgende stukje code om de excel sheet te sorteren op kleur zodat ze allemaal bij elkaar staan.

Visual Basic Code:

xlWorkSheet.Range("A2:AC100").Sort(Key1:=xlWorkSheet.Range("C2"), Order1:=Excel.XlSortOrder.xlDescending, Header:=Excel.XlYesNoGuess.xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=Excel.XlSortOrientation.xlSortColumns, _
DataOption1:=Excel.XlSortDataOption.xlSortNormal)

Nu is mijn vraag stel hij sorteert deze en hij ziet dat hij een andere kleur moet gaan sorteren , is het dan mogelijk om eerst een lege regel te laten plaatsen eer hij de volgende kleur doet?
Of moet ik voor alle kleuren beter steeds opnieuw mijn adapter opnieuw laten vullen en die op kleur laten inlezen?

#9 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 07 juli 2015 - 07:59

Ik heb het toch moeten doen door ze apart op te halen.

#10 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 14 juli 2015 - 18:39

Ik moet in de excel sheet deze formule hebben.:
Visual Basic Code:
 '=ALS(M4>0;M4-$U$1;" ")

Nu had ik dit staan.:
Visual Basic Code:
 xlWorkSheet.Cells(extrameetelling + 1, 29) = "=ALS(M3>0;M3-$U$1;" & " " & ")"
Maar het probleem zit hem in die " " hoe verwerk ik die in vb.net in mijn formule?

#11 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 28 mei 2019 18:00
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 15 juli 2015 - 19:08

Probleem opgelost dmv.:
Visual Basic Code:
"=ALS(N" & extrameetelling + 1 & ">0;N" & extrameetelling + 1 & "-$AD$1;"" "")"






Ook met taq VS 2013 SOLVED, VS2013, excel, mdb, access voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2013 SOLVED] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)