The Excel to Text Converter is a newer version of the Batch Excel To CSV Converter Application which works on Windows & Mac. Check out the article here to find out more.

I have been truly fascinated by the amount of visitors that I get because of the simple XLS/XLSX to CSV converter script that I made a while back (original post). For that reason I have created an HTML application (HTA) which offers the same functionality and then some:
XLS To CSV Converter

How this Differs from the Script

  • There is an easy to use interface.
  • You can customize how the resulting files are named.
  • You can filter which sheets will be exported as CSVs using simple text matches and/or regular expressions.
  • You will see the results of the conversion process in one place after the process is finished.

Using It

  • Download it from here.
  • Unzip the .HTA file.
  • Double-click on the .HTA file.
  • Click the Browse for Folder button and browse for the folder that contains the XLS and/or XLSX files whose worksheets should be exported as CSVs.
  • Modify the CSV Naming Schema as you like (hints are given in the application).
  • If you would like to only export worksheets with specific names, enter those names in the Sheet Filters textbox (only one per line). You may also use JavaScript-style regular expressions (one on each line) to match the sheets that you want to convert.
  • If you would like to remove the linefeed characters from all cells, check the appropriate checkbox.
  • Click the Start Conversion button and wait for the results to appear.

Version History

  • 1.0 – The first version.
  • 1.0.1
    • Fixed the error thrown when specifying a normal string as a “Sheet Filter”.
    • Fixed the copyright symbol in the “About” message box.
  • 1.1.0
    • Added the ability to specify the delimiter.

Plans for Improvement

As of right now this application is very simple, but I do hope to beef it up a little as time goes on. Let me know if you have any comments, questions, suggestions, or issues with this new application. Most of all, have fun!!! 😎

Categories: BlogHTA


Andrew · May 4, 2013 at 10:37 PM

Usefull but you should add an option to select files to convert, not only whole folder.

Chad Bernier · June 4, 2013 at 12:33 PM

Hello. I can’t get the sheet filtering to work. How do you save just Sheet 1?

    Chris West · June 5, 2013 at 12:23 AM

    I fixed the error and uploaded v1.0.1. Now you should be able to simply add a line with the name of the tab to the Sheet Filters in order to only convert that tab. Thanks for the feedback!

      T · April 18, 2016 at 5:58 AM

      Hi Chris,

      thanks for this utility. It seems as the sheet-filtering doesn’t work, or perhaps I am missing something!

      I have tried to add several filters, like this:


      But when doing this, only the Sheet4 gets converted, I even tried RegEx but only managed to get it to convert 2 of 3.


        T · April 18, 2016 at 7:01 AM

        OK, so I managed to do this by doing the following:



Steve Gunn · June 18, 2013 at 7:57 PM

WOW! This app just saved me literally HOURS of work. Thanks

Rob · June 25, 2013 at 9:48 AM

This is just what I need to convert a directory of xls files BUT they are all password protected (with the same password) and your script reports 0 files converted. Is there any way you can support passwords?

me · July 4, 2013 at 2:18 AM

Hello great script !
Is there any way to change the delimiter ? I need to you TAB delimiter.
Thanks you

    Chris West · July 10, 2013 at 3:11 AM

    Version 1.1.0 now gives you that capability.

Roger Bixley · July 9, 2013 at 3:48 PM

I second that request to include the ability to change the delimiter. It would be very helpful!

    Chris West · July 10, 2013 at 3:11 AM

    I have just released version 1.1.0 which now provides the ability to use a tab, comma, or semi-colon as the delimiter.

Bruce · July 11, 2013 at 11:01 PM

Thank you for this GREAT script! I would like to specifically EXCLUDE a couple of Sheet Names like Chart1, Macro1, etc. Can you help me figure out how to accomplish this?

    Chris West · July 11, 2013 at 11:55 PM

    If you want to exclude all of the tabs named Chart# or Macro# you can use the following regular expression as your filter:

    That will basically make sure that only the sheets (tabs) whose names don’t start with Macro followed by a digit or Chart followed by a digit will be converted. The lowercase “i” at the end signifies that casing is not important.

Sisir Debnath · July 29, 2013 at 5:28 AM

Hi Chris, Great utility. It would be great if all files in subfolders could be converted as well.

Hugh · July 29, 2013 at 11:20 PM

Thanks, that just saved me an painful hour.

Jeroen · July 31, 2013 at 6:33 AM

Hi Chris,

I have been looking for a tool like this for a while.
However, for some reason I cannot really find what I need.
Maybe you can help me.

I need the XLS to be converted into:
a. PIPE-delimited file
b. UTF-8

Do you think it is possible to offer this in your solution? (within a week or so)
Especially the PIPE thing is hard.
There are tools to convert to UTF-8 separately, but of course it would be ideal to do it all in one tool 🙂
That would be awesome.

Thanks in advance.

Rick · August 20, 2013 at 11:05 AM


Piotr · September 6, 2013 at 4:37 AM

It looks that regional settings have impact on selected delimiter:
1. Select comma as a delimiter on English (United States) – comma will be used.
2. Select comma as a delimiter on Dutch (Netherlands) – semi-colon will be used.

Moreover the same happens when you use ‘Save As CSV’ option in Excel.

Is there any way to force the tool to use the selected delimiter regardless of regional settings?

Jamie Maloney · November 18, 2013 at 5:50 PM

Worked great! Thank you so much for making this publicly available!

David · December 4, 2013 at 1:10 PM

This is very helpful! Thank you for making it available and so easy to use

Steve Ross · December 14, 2013 at 4:49 PM

Thank you for this script. It saved me a lot of time and aggravation. Worked perfectly.

Happy customer · December 17, 2013 at 6:10 AM

Great tool!!! TKS!

appyface · December 27, 2013 at 2:48 PM

Thanks for this app! It worked great to convert to tab delimited output for the two ‘regular’ xlsx workbooks in my folder. However, I have 300+ more ‘xlsm’ workbooks to convert in that same folder. The macros don’t matter, just need the text of the worksheets same as the ‘xlsx’ workbooks. Can the app also work with the sheets in a macro-enabled workbook? Thank you very much.

Brandon · January 13, 2014 at 1:43 PM

I have the same problem with .xlsm files. :-/

    Balaji · February 28, 2014 at 6:29 PM

    Open the script and edit the foll. line
    [code language=javascript]
    var REGEXP_WORKBOOK = /([^\\\/]+)\.xlsx?$/i;
    [code language=javascript]
    var REGEXP_WORKBOOK = /([^\\\/]+)\.xlsm?$/i;

Simon · January 14, 2014 at 2:59 PM

Great tool. Life saver

Improvement: It would be great if it can search for excel sheets in subfolders as well!

Simon · January 14, 2014 at 3:17 PM

Hmm…If the workbook only contains one tab, it doesn’t seem to convert that one sheet to a csv? Should this be the case? It would be great if it did workbooks that only contain one tab as well since I can run an entire folder to batch convert all, regardless if the have one or multiple tabs.

Simon · January 14, 2014 at 3:43 PM

Sorry I should clarify that if the excel work book is of type XLTX (Excel Template) AND contains only one tab, then it does not appear to work. If the XLTX contains more than one tab, then it seems to work. Strange.

Raj · February 10, 2014 at 5:27 AM

wow.. nice and easy…
can you let me know how to add option to select different output folder.


Serxho · February 14, 2014 at 6:23 AM

Nice application,
Is it possible to add a filter to select only columns you want to convert with check box or to select a range?


Kalcho · March 5, 2014 at 2:16 PM

Is there any way I can export all sheets from the xls file to a single CSV?

Christoph · April 9, 2014 at 5:33 AM

Great tool!
would it be possible to delete/exclude certain rows/columns in the process?

Jack · April 11, 2014 at 8:44 AM

Thanks for making this, you’ve saved me a lot of time.

Ponana · May 1, 2014 at 8:58 AM

This script has been very helpful. I converted 64 files in few minutes.
Incase you converted and notice the conversion include empty sheets you didnt have any data on, just ignore and stick to sheet one, where most people put there data one.

thanks again man. I really appreciate

Anggi · June 24, 2014 at 3:02 AM

Thank you so much…live saver..:)

Roger · June 25, 2014 at 3:44 AM


This is really a great, although I still stroggling a little with the Java Regular Expressions.
Because the example didn’t work, so needed to search for some context about these RE.

Maybe good idea to place somewhere list of examples of all kinds of usage settings, so not only RE but in combination with all options possible. Easy to pick an example or adapt by the person itself.
Can we also use the filter string from the command line version (.js-code script) as a parameter for the script maybe?
As I would like to use it in a batch process.

For the rest a very handy and easy, light tool to get the job done!
Keep improving as well….

Jason · July 7, 2014 at 2:58 PM

Thanks, this was super convenient and exactly what I needed. Kudos to you!!

Phil Rimmer · July 8, 2014 at 5:25 AM

Great little app.
It would be great if it could also automatically delete the xls file after conversion.
Also would it take much to make this run automatically whenever an xls file is saved in the folder?


Sergei Lukianov · August 5, 2014 at 8:14 AM

Thank you for this super perfect app. It very help to me.

Rebecca · August 19, 2014 at 1:10 PM

Thank you, simple to use and extremely effective. Saved me so much time.

Rafael · August 21, 2014 at 9:19 PM

This app is awesome!!!
Thanks a lot for making it available.

Ade Eka · September 24, 2014 at 11:15 PM

Thank You so much!!
This App is very helpful.

JJ · September 25, 2014 at 10:42 AM

I’m not sure if anyone else is encountering this issue (or I’m bad at following instructions), but I just want to convert a few sheets and whenever I type in a list of names (on separate lines as instructed), it only converts the LAST one from the list! is this perhaps a bug? Thanks in advance

    JJ · September 25, 2014 at 10:43 AM

    Oh and by the way, forgot to mention… this tool is super rad… better than half the paid tools out there!

    JJ · October 7, 2014 at 10:00 AM

    I found a workaround for this issue. The tool doesn’t accept certain characters in the sheet name, so put all the sheets that you want to be CSV-ed into the front of the XLS and then separate out the rest by inserting a sheet called “>” and the program will stop attempting to process the sheets once it gets to “>”.
    Once again, a great time saving tool!

James C. Taylor · October 31, 2014 at 7:19 AM

Just what I needed and works like a dream. Thanks.

Brad Eck · November 5, 2014 at 8:34 AM

Nice! Would be nice to have progress feedback. I had a folder with about 25 spreadsheets that took a while and it just stared back at me 😉 In fact, displaying the console during the process would be just fine.

Ross Carver · November 11, 2014 at 5:54 PM

Great job – this is a huge timesaver!

Sonia · January 6, 2015 at 8:33 AM

Hi Chris,
Thanks for this awesome tool.
As some of the people mentioned above, I am working with files inside multiple subfolders (e.g. files are in folders data-01, data-02, data-03, data-04 … data-52 etc.), and right now I’m manually selecting each one.
Is there any way to select all the folders in one go?

Thank you.

K-AHZ · January 29, 2015 at 1:58 PM

What a crucial find. I stumbled upon this and am so glad i found this golden nugget. Chris, thanks so much man.

Abe · February 17, 2015 at 4:15 PM

Great tool! How could I adjust the names of the files that are created to be the order that they appeared in? i.e. file 1 in the folder becomes 1.csv, file 2 becomes 2.csv etc?


Jennifer · October 5, 2015 at 9:14 AM

When I double clicked the hta file it gave me this message: There is no application set to open the document “XLS to CSV Converter.hta”. Does this only work on Windows? Thanks!

    Chris West · November 8, 2015 at 1:19 AM

    Yea, sorry, HTAs only work on Windows.

Tom Barringer · November 3, 2015 at 2:39 AM

Thanks for your useful utility. Not sure where I ran across it but it was a link somebody had posted.

Unfortunately I had a need to export some sheets in Unicode due to Arabic and Cyrillic characters in some cells. I have made what I think are suitable modifications and include the changes for your entertainment.

Diff output (with left-angles replaced with left-brackets for blog posting):

[ var xlUnicodeText = 42; // Now saving in UNICODE text

[ ? $id(‘radDelimTab’).checked || $id(‘radDelimTabUnicode’).checked

> ? $id(‘radDelimTab’).checked
[ $id(‘radDelimTabUnicode’).checked ? xlUnicodeText :
[ delimiter == ‘\t’ ? xlText : xlCSV, // FileFormat

> delimiter == ‘\t’ ? xlText : xlCSV, // FileFormat
[ [input type=”radio” id=”radDelimTabUnicode” name=”delimiter” value=”tab” />[label for=”radDelimTabUnicode”>Tab/Unicode[/label>

Feel free to incorporate, make changes, etc. while being aware that I don’t know Javascript at all — your extensive comments are thus also much appreciated! 🙂

frozenbutter · April 25, 2016 at 6:33 AM

nice tool very useful

many thanks!

christa · May 17, 2016 at 4:57 PM

Awesome! Works like a charm and saved me hours of tedious work!

Thank-you so much

KHTang · May 19, 2016 at 5:00 AM

Great Job!
Thank you very much!

Juliette · May 26, 2016 at 11:36 AM

Hi Chris,

Is the application you developed also suited to work with Mac OSX? I have downloaded the package and I’m not able to open the .hta file. I think this is because of differences between Windows and OSX.

Hope you can help me :).

Thanks in advance!

    Chris West · May 1, 2018 at 10:17 AM

    I just created an application that works on Windows & Mac. Read about it here.

mko · June 28, 2016 at 7:03 PM

This is awesome. Thanks.

Borja · July 1, 2016 at 3:56 AM


Thanks for your app, it saved me a lot of hours. Just a quick thing, I would comment out the read only on the text box for the folder path. That way I was able to copy my path and thing went much faster

This is what you have:

I changed to this:

Hope this helps!

Fred Covely · August 20, 2016 at 11:18 AM

Great job on this! If I keep using it I’ll improve and toss changes over to you.

sean hofland · August 25, 2016 at 2:16 AM

Excellent converter, many thanks!

Randy · August 29, 2016 at 9:49 AM

awesome tool, it works in win10 well, thank you.

Mike B · September 1, 2016 at 9:30 AM

It would be great if this app could filter by hidden sheets.

Haitham Khasawneh · September 26, 2016 at 9:06 AM

Thank you so much, a great tool indeed 🙂

Susan · October 12, 2016 at 5:13 PM

Simple for you! Thank you for making this tool. I googled into your plug about running a script. It was over my head but luckily the comments directed me to this page. It works beautifully. Seriously has saved me a few hours. Where is the donate button?

User · November 9, 2016 at 3:45 AM

Thank you!

Andrew · November 15, 2016 at 11:41 PM

Awesome app. Saved me loads of time.

John · November 25, 2016 at 9:49 AM

Amazing utility! Thanks for providing it. I’m using it with Alteryx to merge 100s of csv files. You’ve made my life easier!

Andrea · November 28, 2016 at 6:05 AM

Great tool! Thank you!

whall · December 3, 2016 at 10:11 AM

This was fantastic, easy and exactly what I needed. I write a weekly status report in Excel and it has four tabs. One of the tabs is a detailed work log where each row is a one-liner status (ie, “Wrote script for XXX that did YYY”) and a category of 1 Headline, 2 Major 3 Medium 4 Menial. It helps me make sure I understand what’s important for the week and what to bubble up.

Where I needed help was how to extract just the headlines from a year’s worth of weekly files. Since your tool creates the worksheets as different files, it made it super easy!

Combined with some command-line-fu, it was easy to get the list

$ grep -h “1 – Headline” *work*csv | gawk -F’\t’ ‘{print $1}’ > headlines.txt

Reid Givens · December 12, 2016 at 3:21 PM

Saved me tons of time – thanks. I needed it to be recursive, so I added the following at line 528 (right after the file loop) to make it so, in case anyone else needs it:

for(var fc = new Enumerator(fldr.SubFolders); !fc.atEnd(); fc.moveNext())
$id('txtFolder').value = fc.item().Path;

    Ed · January 4, 2017 at 5:56 AM

    Thanks for this addition, works great.

Ed · January 4, 2017 at 5:20 AM

This saved me a ton of tedious work today, thanks

John · January 4, 2017 at 9:58 AM

Do you have a command line interface for the base tool?

brian wood · February 2, 2017 at 1:21 PM

this thing just saved me 60 minutes. i cannot thank you enough.

David Thomas · March 9, 2017 at 11:40 PM

Excellent work mate, thankyou

Brian · April 3, 2017 at 6:26 PM

Thank you so much! This saved me a ton of work. I am writing a research paper and used your software to help organize my data. How should I cite you?

Eric · May 11, 2017 at 12:45 AM

I get an error dialog when attempting to run the program:

Automation server can’t create object

What’s the work-around for this error?

matt · June 13, 2017 at 5:10 PM

Great simple application. Thank you!!

Does anyone know how to change the “Browser for Folder” chooser into a dialog where you can type the path (or paste) instead of having to browse? or maybe drag and drop an XLSx onto it?

And Chris: what license is this shared under? Do you mind if people modify and redistribute it?

    Chris West · March 20, 2018 at 9:33 AM

    I am making an updated version of this app that I hope to release soon for both Windows and Mac and as always it will be free.

Ari · July 12, 2017 at 1:36 AM

i am not open this program and I get an error dialog Restictions ” This Operations has ben Cancelled due to Restictions in effect on this computer “. I’ve done various ways with google but still can not. Is there any way to open it?

Eirini · July 17, 2017 at 6:07 AM


I would like to know how many excel files i can convert to Csv at the same time? what is the maximum number?

Jeff · July 26, 2017 at 7:50 AM

would love the option to set column A to SourceFile
inject Column A with SourceFileName

Jeff · July 26, 2017 at 7:52 AM

would love it to fill in the directory it is running from / started from

Bruce Harris · July 26, 2017 at 8:04 AM

Thanks so much for this little utility! I’d like to offer you a little coin for your efforts. How can I make that happen?

mkchain · August 5, 2017 at 10:31 AM

Thank You so much
Great tool and save time
convert my 100 XLS in 6 min.

Javier Daniel · August 15, 2017 at 4:38 PM

This is a fantastic tool. Thank you very much.

Jai · August 29, 2017 at 2:51 AM

Great work, I was about to write code in Java for similar purpose and a small google search took me here.

Small suggestion – When giving input folder, need an option asking, if Sub folders are required ? Without this one have to copy all files to root folder. An output folder option can also be helpful, if the number of files is more than 100.

Rucsandra · September 4, 2017 at 11:19 AM

Thank you so much !! Your tool saved me a ton of work !

Pod51 · September 15, 2017 at 11:41 AM

Great tool so many thanks for your work. I am however having a few problems wih data as its converted from xls to csv.

For example the following data is being changed from :-
Players 1-2
Manual number 5030930024864


Players 2-Jan
Manual number 5.03093E+12

Any help would be hugely appreciated.

Thanks in advance

Diana · November 1, 2017 at 5:04 AM

Thank you so much for creating this tool and making it available! It’s simple to use and I love the range of options that you’ve incorporated. It is fantastic! 😀

Jim Freeman · November 16, 2017 at 5:23 PM

when I run the program I get a “SaveAs method of workbook class failed undefined”

Chris · November 18, 2017 at 11:46 AM

Thank you so much kind sir!

You have literally saved me hour and hours of painstaking work. I cannot thank you enough for this!

Paul Sventek · December 2, 2017 at 8:18 AM

Tip of the hat to you Chris, this tool saved me oodles of time.

Chetan Mahadik · January 16, 2018 at 6:14 AM

Thanks Chris, it saved me hours and the process was quick. Just, what I was looking for.

max meulemann · February 7, 2018 at 8:28 AM

Is there a way to filter a hidden sheet?

Shashi Raj Buddhoo · February 20, 2018 at 4:23 AM

Its not working… The console window opens and the eror is unspecified.

Starting Excel….

Ramasamy · March 1, 2018 at 10:06 AM

Looking for an automatic convertor from XLS to CSV format.
i.e A tool which fetches the XLS files from a folder and convert to CSV and place it in another folder. Any solution for this?

Vagelis · March 28, 2018 at 8:27 AM

Thank you very much! Greetings from Greece!

Xylon · April 10, 2018 at 12:50 PM

Tried several macros to attempt this, none worked, this program did the trick with much great ease, thanks so much!

Kav · April 11, 2018 at 11:10 PM

Amazing, just what I needed! thank you so much

Gene Bradley · April 19, 2018 at 1:56 PM

Any new upates? Downloaded 04/19/2017. Getting an error about 1/2 way through. Trying to do 209 files. is there a limit?

Gene Bradley · April 19, 2018 at 2:00 PM

Here is the error.
Critical error occurred.

The following error causes this script to fail.
The remote server machine does not exist or is unavailable.

Georges LE ROUX · October 2, 2018 at 6:50 AM

critical error occured; the following error caused this script to fail: un composant ActiveX ne peut pas creer un objet undefined…

Beata · October 23, 2018 at 4:34 AM


I am trying to convert files with Hebrew and English in them. Is there a way the Hebrew will be enoded correctly in the csvs and not turn out as gibrish?

Serene · March 6, 2019 at 3:08 AM

Thank you so much for sharing! Great application!

Bob · June 21, 2019 at 3:06 PM

Hello, thank you for making this. I am having an issue where some files are causing it to crash. So far I have noticed that the names seem to be a bit unusual:

4000 accounts.xlsx

Any idea why those types of names would be causing a crash and what I could possibly do to prevent that?

Dennis · August 30, 2019 at 4:35 AM

Hey Chris

Can you add an option to merge all csv’s to one file?

oa · August 15, 2020 at 5:09 PM

Hi Chris! Grey utility, happy I’ve found it. Would you kindly have an option to add sheet name as an extra column to CSV? Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *