0
我有一個問題可以保存從模型創建的xls圖書到硬盤驅動器。我使用的溫泉AbstractExcelView
和如何從模型中保存新創建的xls文件Spring MVC
protected void buildExcelDocument(Map<String, Object> model,
HSSFWorkbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception
的問題是,我不能讓我的方式爲一個窗口彈出用戶屏幕,用戶選擇保存文件,然後點擊保存它的地方。
//This class makes convertation from Spring MVC model to excel document
public class PagetoExcelConverter extends AbstractExcelView{
List<FormDate> attributesList = null;
//Create massive of constants for making table header
private final String[] HEADER_NAMES_MASSIVE = {"Name", "Type", "Date", "Description"};
@SuppressWarnings("unchecked")
@Override
protected void buildExcelDocument(Map<String, Object> model,
HSSFWorkbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
//Creating new instance of ArrayList for add model attributes to
attributesList = new ArrayList<FormDate>();
//Adding model attributes to ArrayList
attributesList.addAll((List<FormDate>)model.get("findAttributes"));
//Creating sheet inside of book with given name
Sheet sheet = workbook.createSheet("Result");
sheet.autoSizeColumn(0);
//Making first row as a header
Row headerRow = sheet.createRow(0);
//Creating head for table by iterating over HEADER_NAMES_MASSIVE
for(int i=0; i<HEADER_NAMES_MASSIVE.length; i++) {
Cell headCell = headerRow.createCell(i);
headCell.setCellValue(HEADER_NAMES_MASSIVE[i]);
headCell.setCellStyle(headCellstyle);
}
int rowNumber=1;
//Add data to table by iterating over and attributes
for(int i=0; i<attributesList.size(); i++) {
Row dataRow = sheet.createRow(rowNumber);
Cell dataCell;
int cellNumber=0;
dataCell = dataRow.createCell(cellNumber);
dataCell.setCellValue(attributesList.get(i).getFormDescriptionList().get(i).getInstitutions().getNameOfInstitution());
cellNumber++;
dataCell = dataRow.createCell(cellNumber);
dataCell.setCellValue(attributesList.get(i).getFormDescriptionList().get(i).getInstitutionType().getTypeOfInstitution());
dataCell.setCellStyle(dataCellstyle);
cellNumber++;
dataCell.setCellValue(attributesList.get(i).getParticularDate());
cellNumber++;
dataCell = dataRow.createCell(cellNumber);
dataCell.setCellValue(attributesList.get(i).getFormDescriptionList().get(i).getDaySchedule());
dataCell.setCellStyle(dataCellstyle);
cellNumber++;
dataCell = dataRow.createCell(cellNumber);
dataCell.setCellValue(attributesList.get(i).getFormDescriptionList());
cellNumber++;
}
attributesList = null;
}
}
所以,如果我把這段代碼:
FileOutputStream fos = new FileOutputStream("/home/vadim/Desktop/mybook.xls");
workbook.write(fos);
它保存在那裏我點它來保存文件。但我想爲用戶彈出一個小窗口。
我的web應用/ WEB-INF/classes中view.properties:
#This view property triggered from org.springframework.web.servlet.view.ResourceBundleViewResolver for xls converting
#Here is xlspage is name of the jsp page, is tied in with (class) with do converting model to xls
xlspage.(class)=edu.demidov.service.PagetoExcelConverter
我viewResolvers聲明中的servlet上下文:
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/classes directory. Goes first -->
<beans:bean id="xlsviewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<beans:property name="order" value="1" />
<beans:property name="basename" value="views"/>
</beans:bean>
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean id="jspviewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
先生,我有viewResolver它在我的servlet上下文中。並且我還可以獲取模型數據來構建我的xls書。但爲什麼我沒有窗口顯示,當所有準備好和準備保存。 –
當您從控制器返回ModelAndView時(如上面的答案所示),通常會顯示該窗口(用於選擇保存或打開文件的位置)。 –
我做了,但它彈出與somefile窗口,但現在xls文件。我猜這個文件是我的網址姓氏,沒有擴展名。我該如何處理>? –