서블릿에서 Excel 파일을 만들고 클라이언트 브라우저로 보내려는 시도입니다. 독립 실행 형 프로그램에서 파일을 만들었지 만 컴퓨터에서 파일을 만들었지 만 할 때 이 서블릿에 아무것도하지 않았다서블릿으로 Excel 파일을 보내는 방법
서블릿 :
response.setContentType("text/html;charset=UTF-8");
// PrintWriter out = response.getWriter();
String[] items=request.getParameterValues("lecture");
String course=request.getParameter("course");
int sheets=Integer.parseInt(request.getParameter("sheets"));
List <XlElement> xlElements=getAllElements(items);
ServletOutputStream output=response.getOutputStream();
try
{
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename="+course+".xls");
CreateXl xl=new CreateXl();
xl.createScadualFile(output, xlElements, sheets);
output.println(course);
}
catch (Exception e)
{
System.out.println(e.toString());
throw new ServletException("Exception in Excel Sample Servlet", e);
}
output.close();
createXl 클래스
private List<WritableSheet> xlSheets;
private String[] days={"א","ב","ג","ד","ה"};
private final int numOfClasses=9;
private final int cellHeight= 1020;
private final int cellWidth=15;
public void createScadualFile(ServletOutputStream output, List <XlElement> items,int sheets) throws IOException, WriteException{
xlSheets=new ArrayList<WritableSheet>();
WritableWorkbook workbook = Workbook.createWorkbook(output);
for(int i=0;i<sheets;i++){
WritableSheet sheet = workbook.createSheet("week "+(i+1), i);
xlSheets.add(sheet);
}
for(WritableSheet s: xlSheets){
initSheet(s);
}
for(XlElement e: items){
insertElement(e);
}
workbook.write();
workbook.close();
}
private WritableCellFormat getCellFormat(Colour colour, Pattern pattern) throws WriteException {
WritableFont cellFont = new WritableFont(WritableFont.TIMES, 12);
WritableCellFormat cellFormat = new WritableCellFormat(cellFont);
cellFormat.setBackground(colour, pattern);
cellFormat.setWrap(true);
cellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.TOP);
return cellFormat;
}
private void initSheet(WritableSheet s) throws WriteException{
for(int i=0;i<days.length;i++){
Label l=new Label(i+1,0,days[i],getCellFormat(Colour.GREY_25_PERCENT,Pattern.SOLID));
s.setColumnView(i+1,cellWidth);
s.addCell(l);
}
for(int i=0;i<numOfClasses;i++){
Label l=new Label(0,i+1,Integer.toString(i+1),getCellFormat(Colour.GREY_25_PERCENT,Pattern.SOLID));
s.setRowView(i+1, cellHeight);
s.addCell(l);
}
}
private void insertElement(XlElement e) throws WriteException{
Label l=new Label(e.getCol(),e.getRow(),e.toXlString(), getCellFormat(Colour.RED,Pattern.SOLID));
xlSheets.get(e.getWeek()).mergeCells(e.getCol(), e.getRow(), e.getCol(), e.getRow()+e.getSpan()-1);
xlSheets.get(e.getWeek()).addCell(l);
}
용량 사람이 내가 잘못하고있는 중이 야 알아?
"아무것도"하지 않았다면 * 실제 *했을 때 예외를 던질 가능성이 있습니다. 서버 로그를 확인하여 그 내용을 확인 했습니까? –
나는 그것을 debuged했고 나는 어떤 예외도 던지기를 막 볼 수 없었다. 단지 코드를 달렸다. – user1839169