Search code examples
c#formattingdocxspacesnovacode-docx

How can I remove all extraneous spaces from a *.docx file?


I want to remove all superfluous spaces from a .docx file. If there are cases where there are more than two, to accomplish this manually I need to do a search-and-replace for two spaces multiple times to get all of them, and it's hard to tell when I'm "finished."


Solution

  • This code, using the docx library, accomplishes it:

    private void RemoveSuperfluousSpaces(string filename)
    {
        bool superfluousSpacesFound = true;
        using (DocX document = DocX.Load(filename))
        {
            List<int> multipleSpacesLocs;
            while (superfluousSpacesFound)
            {
                document.ReplaceText("  ", " ");
                multipleSpacesLocs = document.FindAll("  ");
                superfluousSpacesFound = multipleSpacesLocs.Count > 0;
            }
            document.Save();
        }
    }
    

    Download docx from here.