| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > как отличить XML от Excel? |
| Автор: #Maestro# 20.4.2009, 09:36 | ||
очень надо программно открыть Excel и XML-файл и показать его пользователю. вот как выглядит моя функция:
дальше следует выбрать функцию обработки файла (Excel или XML фалов, в зависимости от выбора). вопрос: как узнать тип этого выбранного файла? то есть: какую функцию мне вызвать - обработки Excel-файла? или XML? |
| Автор: yuliada 20.4.2009, 09:41 |
| По идее xml должен всегда начинаться с тега xml, можно почитать в файлике первую строчку |
| Автор: Amp 20.4.2009, 09:49 |
| xls-файл начинает с 8-и байтовой сигнатуры специфичной для compound documents - D0 CF 11 E0 A1 B1 1A E1 |
| Автор: #Maestro# 20.4.2009, 15:29 | ||
| Поставим вопрос по-другому. переменная fName (типа String) содержит имя полное файла. может быть существует функция, способная определить расширение? я решил вопрос по-рабоче-крестьянски:
может кто скажет вариант по-проще? |
| Автор: goodday1941 20.4.2009, 20:49 | ||
можно и так конечно, но можно и так:
Добавлено через 1 минуту и 4 секунды а вообще все типы файлов которые ты можешь читать я бы вынес в enum |
| Автор: #Maestro# 21.4.2009, 09:10 | ||
| если б мне знать что такое enum... вы это имеете ввиду:
?? а как потом это работает? |
| Автор: _and 21.4.2009, 10:06 | ||||
это енум
а так его пользовать
|
| Автор: #Maestro# 21.4.2009, 11:05 |
| уважаемый _and, мне не совсем понятно чем отличаются функции FileTypes и setFileType. по-моему их логика совершенно одинакова. и ещё: если не трудно, не могли бы вы пояснить работу FileTypes.valueOf("XML")? заранее спосибо! |
| Автор: math64 21.4.2009, 12:05 | ||
В нормальном enum setFileType() не должно быть, иначе можно сделать:
и у обоих членов enum будет одно и то же значение поля fileType. |
| Автор: #Maestro# 21.4.2009, 13:36 |
| честно говоря, я тоже не совсем понял зачем создавать такой конструктор, если есть функция set() |
| Автор: LSD 21.4.2009, 14:23 |
| А нафига нужно поле fileType Не говоря уж о том, что под Windows файл может иметь расширение и xml, и XML, и XmL и это будет одно и то же расширение. Добавлено через 1 минуту и 50 секунд Вообщем вариант самый нормальный, если в нем учесть регистр. А вообще у Апача есть куча утилит для работы с файлами которые все это учитывают. |
| Автор: Asal 21.4.2009, 15:42 | ||||||
А почему никто не прислушался к Amp, человек же дело сказал! Расширение же у файла может быть любое, и в винде, и под линем.
Google.com и 10 минут времени |
| Автор: _and 22.4.2009, 04:17 |
все писалось на коленке, на работоспособность не проверпял так что звиняйте коль чего не так |
| Автор: goodday1941 22.4.2009, 10:10 | ||
| далее развиваю тему с енумом... в энум я бы добавил статический паблик метод который бы по файлнейму возвращал тип энума выглядело это бы как то так:
|
| Автор: LSD 22.4.2009, 11:03 | ||
Потому что: 1. Это ненадежно, например Офис 2007 сменил формат документов, теперь он начинается с другой сигнатуры. А файл XML вообще не имеет четкой сигнатуры (пролог документа очень часто опускается). А что прикажете делать если надо добавить ещё один тип файлов, опять искать какая у него сигнатура? 2. Вообще-то расширения для того и придуманы, чтобы идентифицировать типы файлов. Если файл имеет неправильное расширение, это проблемы пользователя. И если у него файлы имеют неправильное расширение, то пусть озаботиться тем, чтобы вручную указать что это за файл. Вообще это очень малораспространённая практика. Так пожалуй поступают только программы для просмотра картинок и программы для восстановления данных. |
| Автор: Amp 22.4.2009, 11:38 | ||
У меня так файловый менеджер работает - расширения им игнорируются P.S. Я и не думал, что такую тему можно мусолить целую форумную страницу. |
| Автор: math64 22.4.2009, 11:43 | ||
что за endsWith() без аргумента? Нужно так:
|
| Автор: goodday1941 22.4.2009, 14:45 |
| math64, сорри, ошибка моя |
| Автор: #Maestro# 22.4.2009, 14:50 | ||
прошу прощения, что вмешиваюсь, но у меня новая проблемма. при создании Excel в строке
вылетает ошибка: Exception in thread "main" org.apache.poi.ss.formula.FormulaParser$FormulaParseException: Specified named range 'stroka' does not exist in the current workbook. видимо setCellFormula(...) может воспринимать только цифры. а что делать, если далжна быть строка? и как компилятор понял, что создаваемый файл называется "workbook"? если я имя задаю только в конце кода. кстати в NetBeanse (или как там его?) версии 5.5 такая проблема не возникает, возникает в шестом. помогите, кто может |
| Автор: LSD 24.4.2009, 12:13 |
| Модератор: Пожалуйста, один топик - один вопрос. |