Не знаю, знаете ли вы это уже, но:
- Excel (если это ваша реальная цель) легко может читать
.csv
файлы напрямую, поэтому любое преобразование, которое вы сделаете, будет вежливым только для ваших менее одаренных пользователей.
- CSV - это формат с наименьшим общим знаменателем. Маловероятно, что какой-либо конвертер добавит информацию к найденному в файле
.csv
, что сделает его более полезным. Другими словами, CSV - это «тупой» формат, и преобразование его в .xls
(вероятно) увеличит размер файла, но не сделает формат более умным.
Предложение Кертиса о POI - это первое, что пришло мне в голову.
Если вы выполняете это преобразование на компьютере с Windows, другой альтернативой может быть Jacob , мост Java-COM, который позволит вам эффективно удаленно управлять Excel из программы Java, чтобы делать вещи например, открыть файл и сохранить в другом формате, возможно, даже применив некоторые изменения форматирования или что-то подобное.
Наконец, у меня также был некоторый успех в выполнении SQL INSERT
s (через JDBC) на листе Excel, доступ к которому осуществляется через мост JDBC-ODBC. то есть ODBC может сделать файл Excel похожим на базу данных. Это не очень гибко, но вы не можете попросить БД создать файлы с произвольным именем .XLS
.
EDIT:
Мне кажется, что readLine()
уже не дает вам целых строк. Как узнать, что возврат каретки не является ограничителем строки? Вы сможете проверить это с помощью отладочных операторов печати сразу после readLine ().
Если это действительно так, это будет отстой, потому что путь вперед будет для вас
- либо распознать неполные строки и вставить их после факта,
- или напишите свою собственную замену readLine (). Простой подход состоит в том, чтобы читать символ за символом, заменяя символы CR внутри строки CSV и накапливая текст в StringBuilder, пока не почувствуете, что у вас есть полная строка.
Обе альтернативы - это работа, которую вы, вероятно, не ожидали.