cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Anonymous
Not applicable

Change the delimiter when creating a CSV file

I am querying a SharePoint List and using the Create CSV Table action to generate a CSV file.

However I want the file to be pipe("|") separated.

 

Is there a way to change the delimiter when creating a CSV file. I would greatly appreciate any advise on this.

2 ACCEPTED SOLUTIONS

Accepted Solutions
Admin_A
New Member

If you intend to do this with the data contained in a SharePoint List, you could :
1) Get your elements with the SP connector;

2) Initialize a string variable with the columns names you would like, e.g. "name;surname;email" and by hitting enter to add a carriage return;

3) Use "Apply to each" on the value element returned by the SP Get elements block;

4) In the apply to each loop, use an "Add to string variable", where the content would be the dynamic fields extracted from SP, separated with ";" and with a carriage return at the end of the line (hit enter)

 

Then you can add your string variable as the content of an attachment for instance.

Hope this helps !

View solution in original post

Hi @Admin_A 

thank for your reply.

 

I had taken a similar route in order to reach the same destination.

I'm creating the CSV table as intended by MS Flow, but I'm using 'custom columns'.

On each header/column I'm adding some special characters (note that these are also forbidden in the SP list, via column validation).

nihkel_0-1598950790454.png

Note the pipes encapsulating the content (everywhere except the line jump, since I'm using the default carriage returns on the CSV).

My aim was to create an easily replaceable set of characters (in my case, pipe-comma-pipe) I could look for, and then replace it as a whole for the character I need to be used as separator.

 

So next step is a compose action with a replace expression for the 'character set' I created.
I look for |,| and then replace it with my desired separator.
I also didn't needed to take the carriage retun into account since I'm using the default ones created for each line on the CSV.

 

I hope thi can help someone 🙂

View solution in original post

26 REPLIES 26
v-yamao-msft
Community Support
Community Support

Hi @Anonymous,

 

By default, a comma is used to separate the items. If you want the file to be pipe separated, you could use a replace function to replace the comma with a pipe.

 

Under the Create CSV table, add a Compose action, and use the following code:

replace(body('Create_CSV_table'),',','|')

 

Then in the email body, select the output from the Compose action.

1.PNG

 

Please have a try with it on your side.

 

 

Best regards,

Mabel Mao

Community Support Team _ Mabel Mao
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

HI Mabel,

 

Thank you for the reply but the solution proposed by you will also replace any comma in the input file with a pipe ('|').

I just want the separator to be changed from comma to pipe while keeping the "commas" elsewhere intact.

nihkel
Advocate II
Advocate II

Any updates on this topic?

This is 2 years old and a pretty basic feature.

 

Has anyone come up with a working solution that doesn't reaplace all particular characters in the CSV but only the delimiter/separator?

 

Thanks in advance for your help,

Best regards

Anonymous
Not applicable

I am also looking for a solution for this. Any update?

I was kindly pointed to some potential workaround in a similar thread:

https://powerusers.microsoft.com/t5/Power-Automate-Ideas/Changing-the-delimiter-in-Create-CSV/idc-p/...

 

Hope this helps @Anonymous 

Admin_A
New Member

If you intend to do this with the data contained in a SharePoint List, you could :
1) Get your elements with the SP connector;

2) Initialize a string variable with the columns names you would like, e.g. "name;surname;email" and by hitting enter to add a carriage return;

3) Use "Apply to each" on the value element returned by the SP Get elements block;

4) In the apply to each loop, use an "Add to string variable", where the content would be the dynamic fields extracted from SP, separated with ";" and with a carriage return at the end of the line (hit enter)

 

Then you can add your string variable as the content of an attachment for instance.

Hope this helps !

Hi @Admin_A 

thank for your reply.

 

I had taken a similar route in order to reach the same destination.

I'm creating the CSV table as intended by MS Flow, but I'm using 'custom columns'.

On each header/column I'm adding some special characters (note that these are also forbidden in the SP list, via column validation).

nihkel_0-1598950790454.png

Note the pipes encapsulating the content (everywhere except the line jump, since I'm using the default carriage returns on the CSV).

My aim was to create an easily replaceable set of characters (in my case, pipe-comma-pipe) I could look for, and then replace it as a whole for the character I need to be used as separator.

 

So next step is a compose action with a replace expression for the 'character set' I created.
I look for |,| and then replace it with my desired separator.
I also didn't needed to take the carriage retun into account since I'm using the default ones created for each line on the CSV.

 

I hope thi can help someone 🙂

Thanks, this was very helpful. We did almost the same thing, although for some reason, a single replace statement looking for |,| did not clean all the records. Where we had comment fields with commas internally, we needed two more replace statements.  We also switched to the ^ symbol, since some of our comment fields also contained pipes! So our three replace/compose statements after the create csv table action were: 

replace(body('Create_CSV_table'), '^,^''^')   This replaced ^,^ with a single ^
replace(outputs('Compose'), ',"^''')  This searched for "^, and replaced it with nothing
replace(outputs('Compose_2'), '"''')  This searched for a double quote mark, and replaced it with nothing.
takolota
Multi Super User
Multi Super User

Hello All,

I ran into similar issues when pulling CSV data in from Power Automate Desktop with commas in the actual data. I wanted to change the delimiter so I could more easily parse the data without commas in the actual data messing things up.

Here's a link to the scope/flow I built so anyone can easily select their CSV data, enter a new delimiter, and get the new delimiter separated data from the final compose action without the usual errors. The file data just needs to have double quotes around any of the records with commas in them or be converted to a text file that automatically applies quotes to those records.
https://powerusers.microsoft.com/t5/Power-Automate-Cookbook/Change-CSV-File-Data-delimiter/m-p/14429...

arielbelaus
Frequent Visitor

Hello all!

I'm exporting a CSV from a paginated Report and I need to replace the comma delimiter to ~. I tried with a compose formula replacing the , with the ~ but I have some data with , and I don't want to replace those.

Any ideas or solutions about it?

Thanks

@arielbelaus 

 

You can try my template for changing the CSV delimiter here:

https://powerusers.microsoft.com/t5/Power-Automate-Cookbook/Change-CSV-Data-Delimiter/m-p/1442954#M5...

It’s set to work even if there are commas in the data. You may have to copy the rest of your flow into the template flow though, as expressions in the template scope are often messed up when you try to copy it into an existing flow.

I could figure it out by changing the commas of the columns for another symbol in my query. Then, with a step of my flow, change the delimiters, and then with other step in the flow change to commas the symbol that I put with the query

Thanks!

It is feasible workaround, when create files with a limited number of columns. When creating multiple flow with more than 100 columns, it become very time consuming.

 

Is it possible to create these flows directly in a Jason format? It is two time-consuming with all these clicks and wait.

Oh my God! This is so brilliant! I cannot isolate the real commas in the text from the commas made by CSV table. And this! This is such a blessing that saves me from recoding my excel script. I am creating a CSV to excel with my pre-defined xlsx template and I need a delimiter that is very unique to recognize when to put a text on the next column. It's a big problem when the sentence has it's own comma that was created by the user, it tends to separate the texts after a comma. It's been a my problem for a year now. Here is my final table. Thanks a lot for this! Cheers to you!

 

DEVREYES_0-1680785798887.pngDEVREYES_1-1680785813437.png

 

Hey @DEVREYES ,

I'm glad this post is stil helpful after all this time 🙂

 

Good luck with your flows,

Cheers!

Thank you very much.  I'm always amazed after hours of going down various complicated rabbit holes only to find a simple solution like yours that works!

Anonymous
Not applicable

I attempted this way. I got seperated columns (finally) but there's the extra column with ",". Is there a way to fix this or go around it?



MicrosoftTeams-image (11).pngMicrosoftTeams-image (10).png

Hi @Anonymous ,

could you show the csv in plain text? like on notepad++ or something?
I'm not sure where that extra column may be coming from. It seems you may have an extra set of separators somewhere.

Also, please expand the 'create table' and the 'compose' steps to take a better look and try to assist you.

Cheers 🙂 

@nihkel  This is a good solution, but there is 1 flaw that needs to be handled 🙂

 

If any cells have "," in it, fx. 3,000.00 that cell will be formatted like "3,000.00" by PowerAutomate.

So the csv file will end up looking like this - notice the CreditLimits with ""

 

ID,Name,CreditLimit,Status
1,John Doe,"3,000.50",Active
2,Serena Young,"1,000.00",Active
3,Henry Ford,500.00,Inactive

 

 

From a pseudo point of view, the Create CSV file action will format the file like this, if following your solution:

 

ID|,|Name|,|CreditLimit|,|Status

 

 

Above will result in a file looking like this - notice the CreditLimit will surround the cell value in " ", which will cause the | to be within the " "

 

ID|,|Name|,|CreditLimit|,|Status
1|,|John Doe|,"|3,000.50|",|Active
2|,|Serena Young|,"|1,000.00|",|Active
3|,|Henry Ford|,|500.00|,|Inactive

 

 

We then apply your solution, which will replace all |,| with ; - will have the file looking like this.

 

ID;Name;CreditLimit;Status
1;John Doe|,"|3,000.50|",|Active
2;Serena Young|,"|1,000.00|",|Active
3;Henry Ford;500.00;Inactive

 

That will replace all |,| with ;   -   but it will not handle the scenario where a , is in a cell value.

 

So what needs to be done, is to replace all 3 cases that's happening (insert csv instead of 'triggerBody')

 

|,|

 

replace(triggerBody()['text'],'|,|','')

ID;Name;CreditLimit;Status
1;John Doe|,"|3,000.50|",|Active
2;Serena Young|,"|1,000.00|",|Active
3;Henry Ford;500.00;Inactive

 

 

,|

 

replace(triggerBody()['text'],'|,','')

ID;Name;CreditLimit;Status
1;John Doe|,"|3,000.50|";Active
2;Serena Young|,"|1,000.00|";Active
3;Henry Ford;500.00;Inactive

 

 

|,

 

replace(triggerBody()['text'],',|','')

ID;Name;CreditLimit;Status
1;John Doe;"|3,000.50|";Active
2;Serena Young;"|1,000.00|";Active
3;Henry Ford;500.00;Inactive

 

 

That will have the file looking like this:

 

ID;Name;CreditLimit;Status
1;John Doe;"|3,000.50|";Active
2;Serena Young;"|1,000.00|";Active
3;Henry Ford;500.00;Inactive

 

 

So last step would be to remove the remaining pipes | 

 

replace(triggerBody()['text'],'|','')

 

 

...which will have the file looking like this:

 

ID;Name;CreditLimit;Status
1;John Doe;"3,000.50";Active
2;Serena Young;"1,000.00";Active
3;Henry Ford;500.00;Inactive

 

 

All above 4 replaces can be nested into 1

 

replace(replace(replace(replace(triggerBody()['text'],'|,|',''),'|,',''),',|',''))

 

 

 

Really props to you @nihkel for coming up with the idea, I just put the last puzzle pieces together 👍

Home more people can benefit from this.

 

I'll be more than happy to explain in deeper details, if alle the expression is too confusing.

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!    This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Community MembersNumber SolutionsSuper UsersNumber Solutions Deenuji 9 @NathanAlvares24  17 @Anil_g  7 @ManishSolanki  13 @eetuRobo  5 @David_MA  10 @VishnuReddy1997  5 @SpongYe  9JhonatanOB19932 (tie) @Nived_Nambiar  8 @maltie  2 (tie)   @PA-Noob  2 (tie)   @LukeMcG  2 (tie)   @tgut03  2 (tie)       Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 2: Community MembersSolutionsSuper UsersSolutionsPower Automate  @Deenuji  12@ManishSolanki 19 @Anil_g  10 @NathanAlvares24  17 @VishnuReddy1997  6 @Expiscornovus  10 @Tjan  5 @Nived_Nambiar  10 @eetuRobo  3 @SudeepGhatakNZ 8     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji32ManishSolanki55VishnuReddy199724NathanAlvares2444Anil_g22SudeepGhatakNZ40eetuRobo18Nived_Nambiar28Tjan8David_MA22   Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji11FLMike31Sayan11ManishSolanki16VishnuReddy199710creativeopinion14Akshansh-Sharma3SudeepGhatakNZ7claudiovc2CFernandes5 misc2Nived_Nambiar5 Usernametwice232rzaneti5 eetuRobo2   Anil_g2   SharonS2  

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages