Click here to Skip to main content
15,896,348 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
I have a small program that helps me to import excel sheets to a Datagridview to later export it to a text file but the problem is that the text file is overwritten. I would like that every time you export the contents of datagridview a new file is created with a different name to avoid overwriting it . I would be very grateful for his help. I use the following code in a button to export the datagrid to text file:


If DataGridView1.RowCount = 0 Then
MessageBox.Show("the datagridview is emptly")
Else
If Directory.Exists("C:\Foldertxt") = False Then
Directory.CreateDirectory("C:\Foldertxt")
End If
Dim sFile As String = "C:\Foldertxt\file.txt"
If File.Exists(sFile) = True Then
My.Computer.FileSystem.DeleteFile(sFile, FileIO.UIOption.OnlyErrorDialogs, _
FileIO.RecycleOption.DeletePermanently, FileIO.UICancelOption.DoNothing)
End If


Using f As New IO.StreamWriter(sFile, True)


Dim col As String = ""

Dim row As String = ""
Dim i As Integer = 0
For Each r As DataGridViewRow In DataGridView1.Rows
For Each c As DataGridViewColumn In DataGridView1.Columns
row = row & "'" & Convert.ToString(r.Cells(c.HeaderText).Value) & "' "
Next
If i < DataGridView1.Rows.Count - 1 Then row &= Environment.NewLine
Next


f.WriteLine(row)
MessageBox.Show("file created")
End Using
End If
I use Visual Studio 2013
Thank so much and sorry for my english
Posted
Updated 19-Mar-18 4:03am

solution:
If DataGridView1.RowCount = 0 Then
            MessageBox.Show("the datagridview is emptly")
        Else
            If Directory.Exists("C:\Foldertxt") = False Then 
                Directory.CreateDirectory("C:\Foldertxt")
            End If
            Dim sFile As String = "C:\Foldertxt\file.txt"
           

Dim count As Integer = 1


Dim fileNameOnly As String = Path.GetFileNameWithoutExtension(sFile)
Dim extension As String = Path.GetExtension(sFile)
Dim path__1 As String = Path.GetDirectoryName(sFile)
Dim newFullPath As String = sFile


While File.Exists(newFullPath)
Dim tempFileName As String = String.Format("{0}({1})", fileNameOnly, System.Math.Max(System.Threading.Interlocked.Increment(count),count - 1))
newFullPath = Path.Combine(path__1, tempFileName & extension)
End While


            Using f As New IO.StreamWriter(newFullPath, True)

               
                Dim col As String = ""
               
                Dim row As String = ""
                Dim i As Integer = 0
                For Each r As DataGridViewRow In DataGridView1.Rows
                    For Each c As DataGridViewColumn In DataGridView1.Columns
                        row = row & "'" & Convert.ToString(r.Cells(c.HeaderText).Value) & "' "
                    Next
                    If i < DataGridView1.Rows.Count - 1 Then row &= Environment.NewLine
                Next

               
                f.WriteLine(row)
                MessageBox.Show("file created")
            End Using
        End If


Thanks anyway!!!
 
Share this answer
 
v2
get the file count in the directory you are saving to. add 1 to this count, then concantate this new number to the end of the file name.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900