Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> найти и открыть Excel-файл 
:(
    Опции темы
#Maestro#
Дата 1.4.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



по-моему эта функция ползволяет пользователю найти и открыть XML-файл:


chooser.setCurrentDirectory(new File(".")); 


chooser.setFileFilter(new
                javax.swing.filechooser.FileFilter() {
            public boolean accept(File f) {
                return f.isDirectory() ||
                        f.getName().toLowerCase().endsWith(".xls");
            }
            public String getDescription() {return "Excel files";}
        });

int r = chooser.showOpenDialog(this);
        if (r != JFileChooser.APPROVE_OPTION) return;
        File f = chooser.getSelectedFile();

        try{
            if (builder == null) {
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                builder = factory.newDocumentBuilder();
            }


} catch (IOException e) {
            JOptionPane.showMessageDialog(this, e);
        } catch (ParserConfigurationException e) {
            JOptionPane.showMessageDialog(this, e);
        } catch (SAXException e) {
            JOptionPane.showMessageDialog(this, e);
        }


подскажите - как выглядит такая же функция только для файла Excel ?
PM MAIL   Вверх
goodday1941
Дата 1.4.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



ну у тебя вроде все для экселя прописано а не для хмля, правда есть один нюанс, у последней версии экселя расштрение не xls на сколько я помню


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
#Maestro#
Дата 2.4.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



поставлю вопрос по-другому:
как программно открыть Excel-файл и показать его пользователю???

Это сообщение отредактировал(а) #Maestro# - 2.4.2009, 10:53
PM MAIL   Вверх
goodday1941
Дата 2.4.2009, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



должна быть установлена программа для просмотра экселек (офис ексель, или опен офис калк)....

ну и далее для 1.5

Код

import java.io.IOException;

class StartExcel {
    public static void main(String args[]) throws IOException{
        String fileName = "c:\\temp\\xls\\test2.xls";
        String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",fileName};
        Runtime.getRuntime().exec(commands);
    }
}



или для 1.6:

Код

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class Test {
  public static void main(String[] a) {
    try {
      if (Desktop.isDesktopSupported()) {
        Desktop desktop = Desktop.getDesktop();
        desktop.open(new File("c:\\a.xls"));
      } else {
      //blah blah blah...
      }
    } catch (IOException ioe) {
      ioe.printStackTrace();
    }
  }
}


Это сообщение отредактировал(а) goodday1941 - 2.4.2009, 11:18


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
#Maestro#
Дата 7.4.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



спосибо. но в нашем с вами случае пользователь открывает ИЛИ функцию для Excel ИЛИ для XML файла. то есть в окошке выбора, на фкладке "File of type:" можно выбрать только один тип. а вот хорошо бы оба типа. не подскажете - как этого  добиться? если это вообще реально...
PM MAIL   Вверх
_Y_
Дата 7.4.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



#Maestro#, что-то я прочел и ничего не понял. В каком окошке пользователь выбирает тип файла?

Может мой ответ и не в тему т.к. не совсем понятно что же нужно: отличить  Excel от XML файла програмно не трудно. Читается и парсится первая строка. В XML это всегда один и тот же тег. Потом файл закрывается и открывается уже так как подобает.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
#Maestro#
Дата 9.4.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



я сам плохо разбираюсь, но, по-моему, функция setFileFilter не может одновременно содержать
 public String getDescription() {return "Excel files";} и 
  public String getDescription() {return "Xml files";}  
если можете дать пример, буду признателен

PM MAIL   Вверх
_Y_
Дата 9.4.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Что-то я все равно не понимаю. Вот пример с http://java.sun.com/javase/6/docs/api/
Код

    JFileChooser chooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
        "JPG & GIF Images", "jpg", "gif");
    chooser.setFileFilter(filter);
    int returnVal = chooser.showOpenDialog(parent);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
       System.out.println("You chose to open this file: " +
            chooser.getSelectedFile().getName());
    }

Если Вы поясните чем не устраивает такой подход, может станет понятнее как решить проблему.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
#Maestro#
Дата 9.4.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



спосибо. сейчас попробую. ещё вопросик. вот кусок кода, который создаёт  xml c заданными тэгами:

      builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc = builder.newDocument();

        // Prepare the DOM document for writing
        Source source = new DOMSource(doc);
        // Prepare the output file
            Result result = new StreamResult(f);

           // for(int i=0; i<collNames.size();i++)
            {
        Element root = doc.createElement("тэг1");

        root.setTextContent(collNames.get(1));

           doc.appendChild(root);

как создать тэг содержащий несколько значений? например все значения массива collNames?

Это сообщение отредактировал(а) #Maestro# - 9.4.2009, 13:06
PM MAIL   Вверх
_Y_
Дата 9.4.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Что Вы подразумеваете под значениями тэга? Может вам нужен тэг с несколькими атрибутами? Типа 
Код

<tag attr1="value1" attr2="value2" />


Это сообщение отредактировал(а) _Y_ - 9.4.2009, 13:09


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
#Maestro#
Дата 10.4.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



можно и так, но я хотел
<tag1> value1
 attr2="value2
<tag1 />
PM MAIL   Вверх
_Y_
Дата 10.4.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Код

<tag1> value1
 attr2="value2
<tag1 />

Это не структура XML. Точнее все, что включено в тэги (value1 attr2="value2) будет интерпретироваться как один кусок текста. Кстати, и с одной кавычкой что-то странное, но это наверное просто опечатка. И еще, закрывающий тэг должен быть </tag1>. <tag1 /> будет интерепретироваться как новый пустой тег.

Если Вы не хотите оперировать атрибутами, можно сделать, например, такую структуру:
Код

<tag1>
   <content1>value1</value>
   <content2>value2</value>
</tag1>


или еще лучше

Код

<tag1>
   <value>value1</value>
   <value>value2</value>
</tag1>

и уже програмно разбираться какое из значений использовать: по положению в дереве документа если используете модель DOM или по очередности возникновения событий если используете SAX

Это сообщение отредактировал(а) _Y_ - 10.4.2009, 10:31


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
#Maestro#
Дата 11.4.2009, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



в общем, ситуация такая: есть два массива CollNames и CollValues. значения CollNames - это должны быть тэги, а CollValues - атрибуты соответствующих тэгов.
в моём примере получается только первый тэг, и только с одним значением. а так хочется, что бы работало!..

Это сообщение отредактировал(а) #Maestro# - 11.4.2009, 23:32
PM MAIL   Вверх
_Y_
Дата 13.4.2009, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Тогда стройте структуру тэгов с атрибутами. Типа:
Код

<CollName1 value="CollValue1" />
<CollName2 value="CollValue2" />
....................
<CollNameN value="CollValueN" />


Если не получается реализация в Java, то выложите код (чтобы его можно было сразу запустить ничего не дописывая). Не всю программу конечно, а маленький объект тестирующий создание нужного Вам документа из простеньких тестовых данных. Чем короче будет код, тем легче будет Вам ответить.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
#Maestro#
Дата 17.4.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 3.7.2008

Репутация: нет
Всего: нет



а вот ещё вопросец! очень надо программно открыть Excel и XML-файл и показать его пользователю (может кто помнит). вот как выглядит моя функция :
Код

JFileChooser chooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
        "Excel files", "xls");
    chooser.setFileFilter(filter);

     FileNameExtensionFilter filter1 = new FileNameExtensionFilter(
        "XML files",  "xml");
       chooser.setFileFilter(filter1);
    int returnVal = chooser.showOpenDialog(this);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
       System.out.println("You chose to open this file: " +
            chooser.getSelectedFile().getName());
       //File f=chooser.getSelectedFile();

       
      
    int returnVal1 = chooser.showOpenDialog(this);
    if(returnVal1 == JFileChooser.APPROVE_OPTION) {
       System.out.println("You chose to open this file: " +
            chooser.getSelectedFile().getName());
       File f=chooser.getSelectedFile();


дальше следует выбрать функцию обработки файла (Excel или XML фалов, в зависимости от выбора). вопрос:
 как узнать тип этого выбранного файла? то есть: какую функцию мне вызвать - обработки Excel-файла? или XML?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.