Я не совсем уверен, что вы подразумеваете под предварительным форматированием текстового документа. StreamWriter может использоваться для записи в любом формате, который вы указываете данные. Это действительно сводится к тому, как вы предоставляете данные StreamWriter. Например, если вы хотите, чтобы строки сетки отображались в виде csv для записи каждого элемента, добавьте запятую (за исключением последнего элемента), а затем после того, как последний элемент напишет новую строку, повторите для всех строк. Если я что-то упустил, пожалуйста, дайте мне знать.
Чтобы предоставить пользователю возможность сохранять, вы должны использовать элемент управления SaveFileDialog (он должен быть в вашем наборе инструментов в Visual Studio). Откроется окно обозревателя, которое позволит пользователю выбрать местоположение и имя). См. Связанную документацию для деталей о том, как фактически использовать класс. Это довольно просто