Jump to content
nelgaio

Guardar ficheiro Excel

Recommended Posts

nelgaio

Boas :)

'declare a new file xls to fill the data in it
        Dim fs As New IO.StreamWriter("C:\alunos.xlsx", False)
        'the following selection is to cover the xml header/
        fs.WriteLine("<?xml version=""1.0""?>")
        fs.WriteLine("<?mso-application progid=""Excel.Sheet""?>")
        fs.WriteLine("<ss:Workbook xmlns:ss=""urn:schemas-microsoft-com:office:spreadsheet"">")
        fs.WriteLine("    <ss:Styles>")
        fs.WriteLine("        <ss:Style ss:ID=""1"">")
        fs.WriteLine("           <ss:Font ss:Bold=""1""/>")
        fs.WriteLine("        </ss:Style>")
        fs.WriteLine("    </ss:Styles>")
        fs.WriteLine("    <ss:Worksheet ss:Name=""Sheet1"">")
        fs.WriteLine("        <ss:Table>")
        'now loop to make the items width
        For x As Integer = 0 To UtilizadoresDataGridView.Columns.Count - 1
            fs.WriteLine("            <ss:Column ss:Width=""{0}""/>", UtilizadoresDataGridView.Columns.Item(x).Width)
        Next
        fs.WriteLine("            <ss:Row ss:StyleID=""1"">")
        'next make a loop to catch the column headers
        For i As Integer = 0 To UtilizadoresDataGridView.Columns.Count - 1
            fs.WriteLine("                <ss:Cell>")
            fs.WriteLine(String.Format("                   <ss:Data ss:Type=""String"">{0}</ss:Data>", UtilizadoresDataGridView.Columns.Item(i).HeaderText))
            fs.WriteLine("                </ss:Cell>")
        Next
        'next start reading rows out to the xml
        fs.WriteLine("            </ss:Row>")
        For intRow As Integer = 0 To UtilizadoresDataGridView.RowCount - 2
            fs.WriteLine(String.Format("            <ss:Row ss:Height =""{0}"">", UtilizadoresDataGridView.Rows(intRow).Height))
            'a nested loop to read the column of each row
            For intCol As Integer = 0 To UtilizadoresDataGridView.Columns.Count - 1
                fs.WriteLine("                <ss:Cell>")
                fs.WriteLine(String.Format("                   <ss:Data ss:Type=""String"">{0}</ss:Data>", UtilizadoresDataGridView.Item(intCol, intRow).Value.ToString))
                fs.WriteLine("                </ss:Cell>")
            Next
            fs.WriteLine("            </ss:Row>")
        Next
        'close the xml spreadsheet using this footer
        fs.WriteLine("        </ss:Table>")
        fs.WriteLine("    </ss:Worksheet>")
        fs.WriteLine("</ss:Workbook>")
        'close the stream writer here.
        fs.Close()

Eu tenho este código para exportar uma DataGridView para Excel, mas ele guarda na partição C:/.

Não é possível aparecer uma janela para escolher onde queremos guardar? ;)

Share this post


Link to post
Share on other sites
Caça

Sim, com um SaveFileDialog


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Andrepereira9

Boas

Podes fazer assim para o utilizador escolher o nome do ficheiro e o sitio onde guardar o ficheiro

 Dim ficheiro As New SaveFileDialog
Dim fs As IO.StreamWriter
ficheiro.Filter = "Livro do Excel (*.xlsx)|.xlsx"

If ficheiro.ShowDialog = Windows.Forms.DialogResult.OK Then
   fs = New IO.StreamWriter(ficheiro.FileName.ToString, False)
   ' Aqui metes o codigo para criar as linhas
End If

Ou então assim para o utilizador escolher apenas o sitio onde quer gravar

Dim pasta As New FolderBrowserDialog
Dim fs As IO.StreamWriter
        
If pasta.ShowDialog = Windows.Forms.DialogResult.OK Then
  fs = New IO.StreamWriter(pasta.SelectedPath.ToString + "\" + "alunos.xlsx", False)
  fs.WriteLine("<?xml version=""1.0""?>")
  fs.Close()
End If


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
nelgaio

Boas

Podes fazer assim para o utilizador escolher o nome do ficheiro e o sitio onde guardar o ficheiro

 Dim ficheiro As New SaveFileDialog
Dim fs As IO.StreamWriter
ficheiro.Filter = "Livro do Excel (*.xlsx)|.xlsx"

If ficheiro.ShowDialog = Windows.Forms.DialogResult.OK Then
   fs = New IO.StreamWriter(ficheiro.FileName.ToString, False)
   ' Aqui metes o codigo para criar as linhas
End If

Ou então assim para o utilizador escolher apenas o sitio onde quer gravar

Dim pasta As New FolderBrowserDialog
Dim fs As IO.StreamWriter
        
If pasta.ShowDialog = Windows.Forms.DialogResult.OK Then
  fs = New IO.StreamWriter(pasta.SelectedPath.ToString + "\" + "alunos.xlsx", False)
  fs.WriteLine("<?xml version=""1.0""?>")
  fs.Close()
End If

Mesmo isso :)

Em .xlsx, não dá. Diz que o ficheiro está danificado ou algo do género. Tive de meter .xls, aparece a mensagem na mesma mas dá para entrar :)

Obrigadão ;)

Share this post


Link to post
Share on other sites
jpaulino

Que forma é essa de criar um ficheiro de Excel? Isso para mim é novo e muito, muito mau  ;)

Procura por OpenXML SDK para fazeres o que queres ... ou espera pela próxima edição da revista PROGRAMAR :)

Share this post


Link to post
Share on other sites
nelgaio

Que forma é essa de criar um ficheiro de Excel? Isso para mim é novo e muito, muito mau  ;)

Procura por OpenXML SDK para fazeres o que queres ... ou espera pela próxima edição da revista PROGRAMAR :)

Eu disto não percebo nada :)

Tinham-me sugerido assim :cheesygrin:

Conheces algum site ou tópico que me possa ajudar a melhorar?

Share this post


Link to post
Share on other sites
FreiNando

No filtro do filedialog falta um asterisco (*)

ficheiro.Filter = "Livro do Excel (*.xlsx)|*.xlsx"

Quanto à forma de criar um ficheiro de Excel com o exemplo que tens é muito mais complicado e obriga-te a conhecer bem o formato de ficheiro

o JPaulino deu-te uma boa ideia.

Mas se tens bons conhecimento de Excel pode usar o Microsoft.Office.Interop.Excel


O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.