Я делаю код, который записывает файл Excel. Однако при открытии файла, созданного в конце функции main
, Open Office выводит сообщение об ошибке, что файл заблокирован неизвестным пользователем. Я проверил, и кажется, что я закрываю все ссылки на файл и книгу, используя файл.Файл заблокирован для редактирования
Заранее благодарим за любую помощь!
Код
public class StandingsFile
{
private Workbook workbook;
public StandingsFile(InputStream inputStream, File outputFile)
{
this.outputFile = outputFile;
workbook = POIExcelFileProcessor.createWorkbook(inputStream);
}
public void write()
{
// Code where the sheets in the Excel file are modified
POIExcelFileProcessor.writeWorkbook(workbook, outputFile);
}
public static void main(String[] args)
{
standingsExcelFile = new StandingsFile(StandingsCreationHelper.class.getResourceAsStream(TEMPLATE_FILENAME), outputFile);
standingsExcelFile.write();
try
{
Desktop dt = Desktop.getDesktop();
dt.open(outputFile);
}
catch (Exception ex)
{
e.printStackTrace();
}
}
}
public class POIExcelFileProcessor
{
public static Workbook createWorkbook(InputStream inputStream)
{
Workbook workbook = null;
try
{
workbook = WorkbookFactory.create(inputStream);
}
catch (Exception e)
{
e.printStackTrace();
}
return workbook;
}
public static void writeWorkbook(Workbook workbook, File outputFile)
{
try
{
FileOutputStream fileOut = new FileOutputStream(outputFile);
workbook.write(fileOut);
fileOut.flush();
workbook.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
Где вы закрываете выходной поток? –
Добавлен файлOut.close(); и, похоже, теперь это работает :). –
Я не знал, что это заблокирует файл. Вы можете добавить его в качестве ответа :). –