Como criar um arquivo csv em c# delimitado por virgula

364 views
Skip to first unread message

matond...@grupoprodusol.com

unread,
Oct 19, 2018, 3:56:19 PM10/19/18
to NetPonto.org - Lista de Discussao Oficial
Na verdade , estou a criar usando worksheet e workbook, a aplicaçaó, cria, mas o arquivo vem com conteudo todo junto e então não se consegue fazer um bom uso dele.
abaixo esta ao codigo de gracao em excel
xlWorkBook.SaveAs(nomeFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, misValue,
                    misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
estou a usar xlCSV ou xlCSVWindows para ter o css, mas náo encontro sucesso no csv gerado

Ricardo Carneiro

unread,
Oct 19, 2018, 6:45:24 PM10/19/18
to netp...@googlegroups.com
Viva,

Se bem percebi, queres uma aplicação C# para criar um CSV? 

StringBuilder ftw!

Abraço,
Ricardo 

--
--
Você recebeu esta mensagem por fazer parte da lista de discussão oficial da Comunidade NetPonto (http://netponto.org).

---
Recebeu esta mensagem porque subscreveu ao grupo "NetPonto.org - Lista de Discussao Oficial" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para netponto+u...@googlegroups.com.
Para mais opções, visite https://groups.google.com/d/optout.
--

Antonio Cunha Santos

unread,
Oct 20, 2018, 12:00:20 PM10/20/18
to netp...@googlegroups.com
Desde que metas os dados num datatable, fazes isso em "duas penadas".

Se estás a usar formato excel, porque não usas o EPP ? https://www.nuget.org/packages/EPPlus/

Anywho

//classe para gerar CSV's
public static class Rfc4180Writer 
{
    public static void WriteDataTable(DataTable 
               sourceTable, TextWriter writer, bool 
                                    includeHeaders) 
    {
        if (includeHeaders) {
            IEnumerable<String> headerValues = 
                                sourceTable.Columns
                .OfType<DataColumn>()
                .Select(column => QuoteValue
                              (column.ColumnName));
                
            writer.WriteLine(String.Join(",", 
                                    headerValues));
        }
 
        IEnumerable<String> items = null;
 
        foreach (DataRow row in sourceTable.Rows) {
            items = row.ItemArray.Select(o => 
                         QuoteValue(o.ToString()));
            writer.WriteLine(String.Join(",", 
                                           items));
        }
 
        writer.Flush();
    }
 
    private static string QuoteValue(string 
                                           value) 
    {
        return String.Concat("\"", 
        value.Replace("\"", "\"\""), "\"");
    }

}

 

//exemplo para escrever um CSV com dados de um datatable

public static class Program {
    public static void Main() {
        DataTable sourceTable = new DataTable();
 
        sourceTable.Columns.AddRange(new 
                                   DataColumn[] {
            new DataColumn("ID", typeof(Guid)),
            new DataColumn("Date", typeof
                                   (DateTime)),
            new DataColumn("StringValue", 
                                 typeof(string)),
            new DataColumn("NumberValue", 
                                    typeof(int)),
            new DataColumn("BooleanValue", 
                                   typeof(bool))
        });
 
        sourceTable.Rows.Add(Guid.NewGuid(), 
             DateTime.Now, "String1", 100, true);
        sourceTable.Rows.Add(Guid.NewGuid(), 
            DateTime.Now, "String2", 200, false);
        sourceTable.Rows.Add(Guid.NewGuid(), 
             DateTime.Now, "String3", 300, true);
 
        using (StreamWriter writer = 
          new StreamWriter("C:\\dev\\dados.csv")) {
            Rfc4180Writer.WriteDataTable
                     (sourceTable, writer, true);
        }
    }

 



António Pedro Oliveira Cunha Santos
"Patience is the companion of wisdom." Aurelius Augustinus Hipponesis"



Contribua para a defesa do ambiente. Não imprima este e-mail se não for necessário.

Please consider the environment before printing this e-mail.

Aviso de Confidencialidade: Este e-mail e quaisquer ficheiros informáticos com ele transmitidos e eventuais anexos são confidenciais, susceptíveis de conter informação sujeita a sigilo profissional bem como informação privilegiada e destinam-se ao conhecimento e uso exclusivo da pessoa ou entidade a quem são dirigidos, ao regime legal de protecção de dados pessoais, de direitos de autor ou outro, não podendo o conteúdo dos mesmos ser alterado e a sua divulgação depende de autorização do remetente. Caso tenha recebido este e-mail indevidamente, queira informar de imediato o remetente e proceder à destruição da mensagem e de eventuais cópias. É estritamente proibido o uso, a distribuição, a cópia, total ou parcial, ou qualquer forma de disseminação não autorizada deste e-mail e de quaisquer ficheiros nele contidos. O correio electrónico não garante a confidencialidade dos conteúdos das mensagens. Caso o destinatário deste e-mail tenha qualquer objecção à utilização deste meio deverá contactar de imediato o remetente.
Limitação de Responsabilidade:
Como o correio electrónico pode ser afectado por dificuldades técnicas ou operacionais, não se garante a sua recepção de forma adequada e atempada. Quaisquer comunicações que devam observar prazos, deverão também ser enviadas por correio ou fac-símile. Qualquer opinião expressa na presente mensagem é imputável à pessoa que a enviou, a não ser que o contrário resulte expressamente do seu texto. É estritamente proibido o uso, a distribuição, a cópia ou qualquer forma de disseminação não autorizada deste e-mail e de quaisquer ficheiros nele contidos.

João Oliveira

unread,
Nov 7, 2018, 4:59:10 PM11/7/18
to netp...@googlegroups.com
Aqui uma library boa para gerar CSVs:
https://joshclose.github.io/CsvHelper/

Cumps,
Joao
Joao Oliveira
Software Engineer

--
--
Você recebeu esta mensagem por fazer parte da lista de discussão oficial da Comunidade NetPonto (http://netponto.org).

---
Recebeu esta mensagem porque subscreveu ao grupo "NetPonto.org - Lista de Discussao Oficial" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para netponto+u...@googlegroups.com.
Para mais opções, visite https://groups.google.com/d/optout.

--
--
Você recebeu esta mensagem por fazer parte da lista de discussão oficial da Comunidade NetPonto (http://netponto.org).

---
Recebeu esta mensagem porque subscreveu ao grupo "NetPonto.org - Lista de Discussao Oficial" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para netponto+u...@googlegroups.com.
Para mais opções, visite https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages