You are viewing limited content. For full access, please sign in.

Question

Question

Export CSV UTF-8 without BOM

SDK
asked on May 7, 2018

Hi all,

 

Using Workflow, I made 2 scripts to export informations from Laserfiche to Windows.

My first script is for the header and my 2nd for the value (using a loop).

 

This is my first one :

namespace WorkflowActivity.Scripting.CSVEntête
{
 using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Text;
    using Laserfiche.RepositoryAccess;

    public class Script1 : RAScriptClass102
    {
        protected override void Execute()
        {
            // fpath = Dossier de destination (ci-dessous fpath = C:\ProgramData\CSV\)
            //string fpath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),@"CSV\\");
            string fpath = "C:\\Export CSV";

            //Si le dossier de destination n'existe pas, on le créer
            if(!System.IO.Directory.Exists(fpath))
                System.IO.Directory.CreateDirectory(fpath);

            //On enregistre le fichier file.csv dans fpath
            fpath = System.IO.Path.Combine(fpath, "CCISM - Rapport du " + GetTokenValue("Today") + ".csv");
            //fpath = System.IO.Path.Combine(fpath, "CCISM - Rapport du test.csv");

            // create a token or update one if you added an Assign Tokens activity
            SetTokenValue("csvpath", fpath);

            // On génère les différentes valeurs des titres des champs ";"
            string s = "\"ID\";";
            s += "\"Nom\";";
            s += "\"Destiné à\";";
            s += "\"Type de formulaire\";";
            s += "\"Numéro de Liasse\";";
            s += "\"Titre de la Liasse\";";
            s += "\"Déclaration N°\";";
            s += "\"Reçu le\";";
            s += "\"Transmise le\";";
            s += "\"Champ1\";";
            s += "\"N°RCS\";";
            s += "\"N°TAHITI\";";
            s += "\"CODE APE ANCIEN\";";
            s += "\"CODE APE NOUVEAU\";";
            s += "\"CODE APE\";";
            s += "\"N°CPS (employeur)\";";
            s += "\"RRP - Nom de naissance\";";
            s += "\"RRP - Nom marital\";";
            s += "\"RRP - Nom d'usage\";";
            s += "\"RRP - Prénoms\";";
            s += "\"RRP - Surnom\";";
            s += "\"RRP - Pseudonyme\";";
            s += "\"RRP - Nationalité\";";
            s += "\"RRP - Sexe\";";
            s += "\"RRP - Né(e) le\";";
            s += "\"RRP - Département\";";
            s += "\"RRP - Commune/Pays\";";
            s += "\"RRP - Domicile\";";
            s += "\"RRP - Nom commercial\";";
            s += "\"RRP - En date du\";";
            s += "\"RRP - Situation matrimoniale\";";
            s += "\"RRP - Marié(e) le\";";
            s += "\"RRP - Département du marié(e)\";";
            s += "\"RRP - Commune / Pays du marié(e)\";";
            s += "\"RRP - Régime actuel\";";
            s += "\"RRE - Date création/modification\";";
            s += "\"RRE - Adresse du siège\";";
            s += "\"RRE - Date de début d'activité\";";
            s += "\"RRE - Effectif salarié\";";
            s += "\"RRE - Activité exercée\";";
            s += "\"RRE - Activité la plus importante\";";
            s += "\"RRE - Origine de la modification\";";
            s += "\"RRE - Lieu d'exercice\";";
            s += "\"RREta - Situation de l'établissement pour l'entreprise\";";
            s += "\"RREta - Date création-modification\";";
            s += "\"RREta - N° TAHITI-ITI\";";
            s += "\"RREta - Adresse\";";
            s += "\"RREta - Enseigne\";";
            s += "\"RREta - Activité exercée\";";
            s += "\"RREta - Activité la plus importante\";";
            s += "\"RREta - Origine de la modification\";";
            s += "\"RREta - Lieu d'exercice\";";
            s += "\"OF - Origine\";";
            s += "\"RRTLE - Adresse\";";
            s += "\"RRTLE - Enseigne\";";
            s += "\"RRTLE - Effectif salarié de l'établissement\";";
            s += "\"RRTLE - Activité exercée\";";
            s += "\"RRTLE - Activité la plus importante\";";
            s += "\"RRTLE - Lieu d'exercice\";";
            s += "\"DF - Estimation du CA sur 12 mois\";";
            s += "\"DF - TVA - CA prévisionnel sur 12 mois\";";
            s += "\"DF - Régime de droit\";";
            s += "\"DF - Option\";";
            s += "\"DRP - Date de cessation\";";
            s += "\"EF - Adresse\";";
            s += "\"EF - Destination\";";
            s += "\"EF - Date de cessation d'emploi de tout salarié\";";
            s += "\"RC - Observations\";";
            s += "\"RC - Adresse de correspondance\";";
            s += "\"RC - Tél\";";
            s += "\"RC - Email\";";
            s += "\"RC - Fax\";";
            s += "\"RC - Le(s) soussigné(s)\";";
            s += "\"RC - Qualité\";";
            s += "\"Numéro de liaison\";";
            s += "\"Date\";";
            s += "\"Numéro de feuillet\";";
            s += "\"Paraphe\";";
            s += "\"Fait à\";";
            s += "\"Le\";";
            s += "\"Nombre de feuillets\";";
            s += "\"Date d'Insertion dans Laserfiche\";";
            s += "\"RRAPLE - Qualité\";";


             // On rentre ici les noms des différents champs et on termine par "Environment.NewLine" pour un retour à la ligne
            System.IO.File.WriteAllText(fpath, s + Environment.NewLine);

        }
    }
}

 

This is the script for my values :

namespace WorkflowActivity.Scripting.CSVEnregistrements
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Text;
    using Laserfiche.RepositoryAccess;

    public class Script1 : RAScriptClass102
    {
        protected override void Execute()
        {
            // On génère les différentes valeurs séparé par un ";"
            string s = "\"" + FixValue(GetTokenValue("ID_doc"))                     + "\"";
            s += ";\"" + FixValue(GetTokenValue("Nom"))                             + "\"";


s += ";\"" + FixValue(GetTokenValue("Champs_Destiné à"))                                                            + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Type de formulaire"))                                                   + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Numéro de Liasse"))                                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Titre de la Liasse"))                                                   + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Déclaration N°"))                                                       + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Reçu le"))                                                              + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Transmise le"))                                                         + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Champ1"))                                                               + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_N°RCS"))                                                                + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_N°TAHITI"))                                                             + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_CODE APE ANCIEN"))                                                      + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_CODE APE NOUVEAU"))                                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_CODE APE"))                                                             + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_N°CPS (employeur)"))                                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Nom de naissance"))                                               + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Nom marital"))                                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Nom d'usage"))                                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Prénoms"))                                                        + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Surnom"))                                                         + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Pseudonyme"))                                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Nationalité"))                                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Sexe"))                                                           + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Né(e) le"))                                                       + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Département"))                                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Commune/Pays"))                                                   + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Domicile"))                                                       + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Nom commercial"))                                                 + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - En date du"))                                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Situation matrimoniale"))                                         + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Marié(e) le"))                                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Département du marié(e)"))                                        + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Commune / Pays du marié(e)"))                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRP - Régime actuel"))                                                  + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRE - Date création/modification"))                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRE - Adresse du siège"))                                               + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRE - Date de début d'activité"))                                       + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRE - Effectif salarié"))                                               + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRE - Activité exercée"))                                               + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRE - Activité la plus importante"))                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRE - Origine de la modification"))                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRE - Lieu d'exercice"))                                                + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - Situation de l'établissement pour l'entreprise"))               + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - Date création-modification"))                                   + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - N° TAHITI-ITI"))                                                + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - Adresse"))                                                      + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - Enseigne"))                                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - Activité exercée"))                                             + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - Activité la plus importante"))                                  + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - Origine de la modification"))                                   + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RREta - Lieu d'exercice"))                                              + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_OF - Origine"))                                                         + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRTLE - Adresse"))                                                      + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRTLE - Enseigne"))                                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRTLE - Effectif salarié de l'établissement"))                          + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRTLE - Activité exercée"))                                             + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRTLE - Activité la plus importante"))                                  + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RRTLE - Lieu d'exercice"))                                              + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_DF - Estimation du CA sur 12 mois"))                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_DF - TVA - CA prévisionnel sur 12 mois"))                               + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_DF - Régime de droit"))                                                 + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_DF - Option"))                                                          + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_DRP - Date de cessation"))                                              + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_EF - Adresse"))                                                         + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_EF - Destination"))                                                     + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_EF - Date de cessation d'emploi de tout salarié"))                      + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RC - Observations"))                                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RC - Adresse de correspondance"))                                       + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RC - Tél"))                                                             + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RC - Email"))                                                           + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RC - Fax"))                                                             + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RC - Le(s) soussigné(s)"))                                              + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_RC - Qualité"))                                                         + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Numéro de liaison"))                                                    + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Date"))                                                                 + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Numéro de feuillet"))                                                   + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Paraphe"))                                                              + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Fait à"))                                                               + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Le"))                                                                   + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Nombre de feuillets"))                                                  + "\"";
s += ";\"" + FixValue(GetTokenValue("Champs_Date d'Insertion dans Laserfiche"))                                     + "\"";

s += ";\"" + FixValue(GetTokenValue("Champs_RRAPLE - Qualité"))                                                     + "\"";



            // On termine la boucle par un retour à la ligne
            System.IO.File.AppendAllText(GetTokenValue("csvpath").ToString(), s + Environment.NewLine);
        }

        private string FixValue(object o)
        {
            if(o == null)
                return "";
            else
                return o.ToString().Replace("\"", "\"\""); // make sure properly escaped
        }
    }
}

 

This is working. I get my CSV's file.

 

But I have some trouble with accents.

 

Using Notepad++ I could see the csv was encoded to UTF-8 (without BOM)

 

I changed this to UTF-8 (I guess this is "with BOM"?)

And this is resolved my bug

 

My question is : How can I create a CSV's file encoded to UTF-8 (with BOM) by default?

 

Thanks in advance for your help.

Regards

0 0

Answer

SELECTED ANSWER
replied on May 7, 2018

In System.IO.File, both AppendAllText and WriteAllText allow you to specify encoding. 

 

Try this documentation link as an example: https://msdn.microsoft.com/en-us/library/ms143357(v=vs.110).aspx

2 0

Replies

replied on May 7, 2018

Thank you Andy,

It's working!

Regards

0 0
You are not allowed to follow up in this post.

Sign in to reply to this post.