{"id":45736,"date":"2026-10-29T06:00:00","date_gmt":"2026-10-29T06:00:00","guid":{"rendered":"https:\/\/www.withdata.com\/blog\/?p=45736"},"modified":"2026-10-29T15:15:45","modified_gmt":"2026-10-29T15:15:45","slug":"datafileconverter-6-6-released","status":"publish","type":"post","link":"https:\/\/www.withdata.com\/blog\/pr\/datafileconverter-6-6-released.html","title":{"rendered":"DataFileConverter 6.6 Released: Recursive Folders, Correct HTML\/XML Output and No Silent Empty Runs"},"content":{"rendered":"<p>October 29, 2026 \u2014 Withdata Software announces <strong><a href=\"https:\/\/www.withdata.com\/data-file-converter\/\">DataFileConverter 6.6<\/a><\/strong>, the batch file converter for Windows, Linux and macOS that reads CSV, TSV, fixed-width text, Excel, XML, JSON, HTML and YAML and writes them to each other or to SQL. This release is about runs that quietly did the wrong thing: a folder that was not walked to the bottom, an HTML or XML file whose values came out mangled, a truncated fixed-width column nobody was told about, a TSV whose fields were glued together, three jobs that converted nothing and still reported success, and a \u201cone file per worksheet\u201d conversion that never created its folder.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.withdata.com\/images\/datafileconverter\/datafileconverter.png\" alt=\"DataFileConverter 6.6 converting files in batch\" width=\"802\" height=\"592\" style=\"max-width:100%; height:auto; display:block;\" \/><\/p>\n<h2>What\u2019s New in DataFileConverter 6.6<\/h2>\n<h3>1. Recursive Folders Now Really Recurses on Linux and macOS<\/h3>\n<p>\u201cRecursive folders\u201d is the option that makes a job convert every file under a folder, not just the ones lying in it. On Windows it always worked. On Linux and macOS the folder scan asked for <code>*.*<\/code>, which those systems read as a literal name filter that only matches files containing a dot \u2014 so a subfolder called <code>sub<\/code> was never entered, and a job pointed at a tree converted half of it without saying a word. The scan now uses the platform\u2019s own \u201ceverything\u201d mask, and a folder that holds a macOS <code>.DS_Store<\/code> file no longer stops it in its tracks. The same fix covers counting and cleaning files in nested folders.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.withdata.com\/images\/datafileconverter\/wizard_source_batch_csv.png\" alt=\"Choosing a folder of CSV files as the source, with Recursive folders enabled\" width=\"722\" height=\"572\" style=\"max-width:100%; height:auto; display:block;\" \/><\/p>\n<h3>2. HTML and XML Values Come Out Right<\/h3>\n<p>Two output formats were quietly altering data. HTML output wrote cell values straight into the page, so a value containing <code>&amp;<\/code> or <code>&lt;<\/code> produced broken markup \u2014 and reading an HTML table back did not decode entities, so the value that came out was not the value that went in. XML output had the opposite problem: values were escaped twice, so an ampersand arrived as <code>&amp;amp;<\/code>. Both directions are fixed; HTML is escaped on the way out and decoded on the way in, and XML is escaped exactly once.<\/p>\n<h3>3. Fixed-Width Files: Truncation Is Reported, Bad Widths Are Refused<\/h3>\n<p>When a fixed-width column is too narrow for the value in it, the value is cut \u2014 that is data loss, and it used to happen silently. It is now written to the run\u2019s log, where a scheduled job or the console can see it. And a width table that carries no usable number at all is refused instead of turning each line into a single wide column.<\/p>\n<h3>4. TSV Without a Delimiter Means TAB<\/h3>\n<p>A session that names TSV as the format but does not spell out the delimiter used to be handed an empty delimiter, and every field was concatenated with the next: <code>'ID''NAME'\u2026<\/code> instead of two columns \u2014 with a successful exit code. The type now implies the delimiter: TAB when it is missing, both when reading a TSV source and when writing a TSV destination.<\/p>\n<h3>5. Three Ways to \u201cSucceed\u201d at Converting Nothing Are Now Errors<\/h3>\n<p>A source folder that does not exist, a URL source whose download is refused, and an RDF class that matches no subject in the file all used to end the same way: nothing converted, nothing written, exit code 0. A typo in a folder path looked exactly like an empty input. All three are now refused with a message that names what could not be read.<\/p>\n<h3>6. One File per Worksheet Really Produces the Files<\/h3>\n<p>Converting each worksheet of an Excel workbook to its own file \u2014 the \u201cone file with N inner items \u2192 N files\u201d shape \u2014 did not create its destination folder, so the run had nowhere to write, and the step\u2019s dialog could crash when the file type list was asked for its selection. The folder is created and the dialog is guarded; a workbook of sheets becomes a folder of files, which is what the option says.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.withdata.com\/images\/datafileconverter\/convert-excel-sheets-to-csv-files.png\" alt=\"Converting every worksheet of a workbook to a separate CSV file\" width=\"722\" height=\"572\" style=\"max-width:100%; height:auto; display:block;\" \/><\/p>\n<h2>About DataFileConverter<\/h2>\n<p><a href=\"https:\/\/www.withdata.com\/data-file-converter\/\">DataFileConverter<\/a> converts between the file formats data actually travels in, one file at a time or a whole folder in a single run, with column mapping when the source and the destination disagree about field names.<\/p>\n<ul>\n<li>Read CSV, TSV, fixed-width text, TXT, INI, Excel, XML, JSON, RDF, SQL and HTML; write CSV, TSV, fixed-width text, TXT, INI, Excel, XML, JSON, HTML, YAML and SQL<\/li>\n<li>Batch convert a folder \u2014 include subfolders \u2014 in one run<\/li>\n<li>Many files into one, one file into many (SQL tables or Excel sheets), and many into many<\/li>\n<li>Column mapping, plus a preview of the result before the run starts<\/li>\n<li>URL sources, including a list of addresses in one job<\/li>\n<li>Command line and scheduled tasks, driven by a saved session file<\/li>\n<li>Runs on Windows 10\/11, macOS 10.15+ and Linux Ubuntu 20.04+<\/li>\n<li>Fully local: your files never leave your machine<\/li>\n<\/ul>\n<h2>Upgrade Today<\/h2>\n<p><a href=\"https:\/\/www.withdata.com\/data-file-converter\/\">DataFileConverter 6.6<\/a> is ready for download: <a href=\"https:\/\/www.withdata.com\/data-file-converter\/download.html\">https:\/\/www.withdata.com\/data-file-converter\/download.html<\/a>. Existing users may update directly. New users can download a free trial and check a recursive batch run, an HTML or XML file with an ampersand in it, or a workbook split into one file per sheet for themselves.<\/p>\n<p>Withdata Software continues improving DataFileConverter based on real-world feedback from people who move data between systems every day.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>October 29, 2026 \u2014 Withdata Software announces DataFileConverter 6.6, the batch file converter for Windows, Linux and macOS that reads CSV, TSV, fixed-width text, Excel, XML, JSON, HTML and YAML and writes them to each other or to SQL. This release is about runs that quietly did the wrong thing: a folder that was not [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69],"tags":[13755,34,13752,13751,15,3956,13825,66,1418,2553,2554,1136,68],"class_list":["post-45736","post","type-post","status-publish","format-standard","hentry","category-pr","tag-batch-convert","tag-csv","tag-data-conversion","tag-datafileconverter","tag-excel","tag-file-converter","tag-fixed-width-2","tag-html","tag-json","tag-linux","tag-macos","tag-tsv","tag-xml"],"_links":{"self":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/comments?post=45736"}],"version-history":[{"count":1,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45736\/revisions"}],"predecessor-version":[{"id":45737,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45736\/revisions\/45737"}],"wp:attachment":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/media?parent=45736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/categories?post=45736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/tags?post=45736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}