简体   繁体   中英

I want to print total number of count with exception in excel using java

I want to print in excel Like, "5" "nullpointer exception" "15" "ZZZZZ exception" "7" "XYZ exception"

I am fetching all the exceptions from mysql database.

Below code gives output of all the exceptions in excel file but dont know how to group those exceptions? One more help, this code prints all the data horizontally Like, "nullpointer exception" "ZZZZZ exception" "XYZ exception".

can you help me to print it vertically and group all those exceptions with count? Thanks.

public class Abcd {

    public static void main(String[] args) {

        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(
                    "jdbc:mysql://10.9.1.1:3306/XXXXX", "Unm", "pass");
    System.out.println("Creating statement...");
            stmt = conn.createStatement();
            ResultSet rs = stmt
                    .executeQuery("select EXCEPTION_MESSAGE from TABLENAME where E_TYPE = 'FAILED' and O_TYPE = 6 and TIME_ >= '2016-4-8 00:00:00' and TIME_ <= '2016-4-11 00:00:00'");

            // Excel file generation code
            String filename = "D:/RONAKExcelFile.xls" ;
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet("FirstSheet");
            HSSFRow rowhead = sheet.createRow((short) 0);
            rowhead.createCell(0).setCellValue("List of Exceptions");
            HSSFRow row = sheet.createRow((short)1);
            int i = 0;
            while (rs.next()) {
                // Retrieve by column name
                String msg = rs.getString("EXCEPTION_MESSAGE");
                // Display values
                System.out.println("Exception=> " + msg);
                row.createCell(i).setCellValue(msg);
                i++;
                System.out.println("Length = " + msg.length());
            }
            FileOutputStream fileOut = new FileOutputStream(filename);
            workbook.write(fileOut);
            fileOut.close();
            System.out.println("Excel file has been generated!");
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // Handle errors for JDBC
            System.out.println("Unable to make connection with database...!");
            se.printStackTrace();
        } catch (Exception e) {
            // Handle errors for Class.forName
            e.printStackTrace();
        } finally {
            // finally block used to close resources
            try {
                if (stmt != null)
                    stmt.close();
            } catch (SQLException se2) {
            }// nothing we can do
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }// end finally try
        }// end try
        System.out.println("Goodbye!");
    }// end main
}

Some suggestions:

1.) Use the GROUP BY statement in your query:

SELECT
    EXCEPTION_MESSAGE, COUNT(*) AS EXCEPTION_COUNT
FROM
    ....
GROUP BY
    EXCEPTION_MESSAGE;

2.) Now each entry of your ResultSet matches one row of your "target-excel". Ie Your while loop should look like:

for(int i=0; rs.next(); i++)
{
    HSSFRow row = sheet.createRow(i);
    row.createCell(0).setCellValue(rs.getString("EXCEPTION_MESSAGE"));
    row.createCell(1).setCellValue(rs.getString("EXCEPTION_COUNT"));
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM