Frage

i am having a resultset and i have to write all the data available in resultset to a text file and populate the same to user for downloading.

i have done the below code to export to excel using poi, same way how to do for text file.

if(exportTo.equals("excel"))
        {
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".xls\"");
            try {
                HSSFWorkbook hwb = new HSSFWorkbook();
                HSSFSheet sheet = hwb.createSheet(reportName); 
                HSSFRow row = null;

                HSSFHeader header = sheet.getHeader();
                header.setCenter("POC");
                header.setLeft("POC");
                header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +
                                HSSFHeader.fontSize((short) 16) + reportName);

                //to add water mark
                /*HSSFPatriarch dp = sheet.createDrawingPatriarch();
                HSSFClientAnchor anchor = new HSSFClientAnchor
                    (0, 0, 1023, 255, (short) 2, 4, (short) 13, 26);
                HSSFTextbox txtbox = dp.createTextbox(anchor);
                HSSFRichTextString rtxt = new HSSFRichTextString("POC");
                HSSFFont draftFont = hwb.createFont();
                draftFont.setColor((short) 27);
                draftFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
                draftFont.setFontHeightInPoints((short) 192);
                draftFont.setFontName("Verdana");
                rtxt.applyFont(draftFont);
                txtbox.setString(rtxt);
                txtbox.setLineStyle(HSSFShape.LINESTYLE_NONE);
                txtbox.setNoFill(true);*/

                HSSFCellStyle style = hwb.createCellStyle();
                style.setBorderTop((short) 6); // double lines border
                style.setBorderBottom((short) 1); // single line border
                style.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);

                HSSFFont font = hwb.createFont();
                font.setBoldweight((short) 700);

                // Create Styles for sheet.
                HSSFCellStyle headerStyle = hwb.createCellStyle();
                headerStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
                headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
                headerStyle.setFont(font);
                headerStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
                headerStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
                headerStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
                headerStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
                headerStyle.setAlignment((short) 2);

                // create Title for the sheet
                HSSFCellStyle titleStyle = hwb.createCellStyle();

                HSSFFont titleFont = hwb.createFont();
                titleFont.setFontName(HSSFFont.FONT_ARIAL);
                titleFont.setFontHeightInPoints((short) 15);
                titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
                titleFont.setColor(HSSFColor.BLUE.index);
                titleStyle.setFont(titleFont);
                titleStyle.setAlignment((short)2);

                row = sheet.createRow((short)1);
                HSSFCell secondCell = row.createCell((short) 0);
                secondCell.setCellValue(new HSSFRichTextString(reportName).toString());
                secondCell.setCellStyle(titleStyle);    
                sheet.addMergedRegion(new Region(1, (short)0, 1, (short)headerCount));

                int sno=0;
                HSSFRow rowhead = sheet.createRow((short)4);
                for (Iterator it = headerMap.keySet().iterator(); it.hasNext();) {
                    String headerName = (String) headerMap.get(it.next());
                    HSSFCell headerCell = rowhead.createCell((short)sno);
                    headerCell.setCellStyle(headerStyle);
                    headerCell.setCellValue(headerName);
                    sno++;
                }

                HSSFCellStyle rowStyle=hwb.createCellStyle();
                rowStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
                rowStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
                rowStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
                rowStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
                rowStyle.setAlignment((short) 2);

                row = custDAO.creadExcelTable(query, sheet, row,rowStyle);
                hwb.write(response.getOutputStream());
                response.flushBuffer();

            } catch (Exception ex) {
                ex.printStackTrace();
            }

        }
public HSSFRow creadExcelTable(String query,HSSFSheet sheet,HSSFRow row,HSSFCellStyle rowStyle ){
        int numberOfColumns=0,sno=0,index=5,iterator=1;
        Connection connection = getConnection();
        if (connection != null) {
            try {
                PreparedStatement reportTablePS = connection.prepareStatement(query);
                ResultSet reportTable_rst = reportTablePS.executeQuery();
                ResultSetMetaData reportTable_rsmd = reportTable_rst.getMetaData();
                numberOfColumns = reportTable_rsmd.getColumnCount();
                int i =0;
                while (reportTable_rst.next()) {
                     row = sheet.createRow((short)index);
                     sheet.setColumnWidth((short)index, (short)100);

                    /* if(i == 0){
                         i = 1;
                         rowStyle.setFillForegroundColor(HSSFColor.BLUE_GREY.index);
                         rowStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
                         System.out.println("BLUE_GREY");
                     }
                    else {
                        i = 0;
                        System.out.println("LEMON");
                        rowStyle.setFillForegroundColor(HSSFColor.LEMON_CHIFFON.index);
                        rowStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
                    }*/

                     HSSFCell serialCell = row.createCell((short)sno);
                     serialCell.setCellStyle(rowStyle);
                     serialCell.setCellValue(iterator);

                            for (int columnIterator = 1; columnIterator <= numberOfColumns; columnIterator++) {
                                 String column = reportTable_rst.getString(columnIterator);
                                 sheet.setColumnWidth((short)columnIterator, (short)3000);
                                 HSSFCell rowCell = row.createCell((short)columnIterator);
                                 rowCell.setCellStyle(rowStyle);
                                 rowCell.setCellValue(column);
                            }
                            index++;
                            iterator++; 
            }
            } catch (Exception ex) {
                ex.printStackTrace();
            }finally {
                try {
                    closeConnection(connection, null, null);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }
        return row;
    }

now i have done updto this and really don't know how to go about

 if(exportTo.equals("text")){
            response.setContentType("text/plain");
            response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".txt\"");
            try {

            } catch (Exception e) {
                // TODO: handle exception
            }

        }

this one for creating file in a specified location

Writer writer = null;

try {
    String text = "This is a text file";

    File file = new File("write.txt");
    writer = new BufferedWriter(new FileWriter(file));
    writer.write(text);
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        if (writer != null) {
            writer.close();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

but i want to export the file with dialog, Please help me how to go about.

Regards

War es hilfreich?

Lösung

I suppose you don't get a dialog box, because your browser can handle text files by itself. The browser reads the MIME type of the http response (which has been set with response.setContentType("text/plain");) Most browsers open html, images and text themselves and redirect other file types like audio, pdf's or Office documents to other applications. So you may need to adjust your browser settings.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top