Я создал программу, которая генерирует электронную таблицу Excel (.xls), а затем спрашивает, хочет ли пользователь открыть ее немедленно (если это так, он использует для этого команду java.awt.Desktops open ()). Это нормально работает в Windows XP, но когда я попробовал с Windows 7, это не сработало. Ниже приведен пример моего кода ...
Desktop myDesk = null;
//if printed to file successfully and java.awt.Desktop is supported
if (printed && Desktop.isDesktopSupported())
{
myDesk = Desktop.getDesktop();
if (myDesk.isSupported(Desktop.Action.OPEN))
{
//ask to open file
int openFile = JOptionPane.showConfirmDialog(null, "File successfully
created.\nWould you like the excel file to open?",
"open file?", JOptionPane.YES_NO_OPTION);
//try to open file
if (openFile == JOptionPane.YES_OPTION)
{
try { myDesk.open(myFile); }
catch (IOException e){ JOptionPane.showMessageDialog(null, "Problem
opening file automatically, please open it
yourself.", "Error", JOptionPane.ERROR_MESSAGE); }
}
}
}
В windows 7 это успешно печатает в файл, показывает диалог openFile, затем показывает диалог ошибки. Этого не должно быть, поскольку для перехода к диалогу openFile должны поддерживаться и Desktop, и Desktop.open (). Возможно, это может быть связано с попыткой открыть файл «.xls» вместо «.xlsx», но для любого типа файла все равно должно быть установлено значение excel ...
Итак, есть идеи о том, почему это происходит? И либо как это исправить, или если есть альтернативный способ открыть файл, который работает лучше универсально?