+ static boolean saveReportHTML(String filepath, String report_title,
+ String[] report_cols, ArrayList<Object> report_data) {
+ FileWriter htmlFile;
+ try {
+ htmlFile = new FileWriter(filepath);
+ htmlFile.append("<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<title>");
+ htmlFile.append(htmlEscape(report_title));
+ htmlFile.append("</title>\n</head>\n");
+ htmlFile.append ("<body>\n");
+ htmlFile.append("<h1>");
+ htmlFile.append(htmlEscape(report_title));
+ htmlFile.append("</h1>\n");
+ htmlFile.append ("<table>\n");
+ htmlFile.append ("\t<tr>\n");
+ for (int i = 0; i < report_cols.length; i ++) {
+ htmlFile.append ("\t\t<th>");
+ htmlFile.append (htmlEscape(report_cols[i]));
+ htmlFile.append("</th>\n");
+ }
+ htmlFile.append ("\t</tr>\n");
+ for (int r = 0; r < report_data.size(); r += report_cols.length) {
+ htmlFile.append("\t<tr>\n");
+ for (int c = 0; c < report_cols.length; c ++) {
+ htmlFile.append("\t\t<td>");
+ htmlFile.append(htmlEscape(report_data.get(r+c)));
+ htmlFile.append("</td>\n");
+ }
+ htmlFile.append ("\t</tr>\n");
+ }
+ htmlFile.append("</table>\n");
+ htmlFile.append("</body>\n");
+ htmlFile.append("</html>");
+ htmlFile.flush();
+ htmlFile.close();
+ return true;
+ } catch (IOException ex) {
+ Logger.getLogger(Utility.class.getName()).log(Level.SEVERE, null, ex);
+ return false;
+ }
+ }
+
+ private static String htmlEscape(Object barestr) {
+ if (barestr == null)
+ return "";
+ else if (barestr.getClass() == String.class) {
+ String barestrs = (String)barestr;
+ String str = barestrs.replace("&", "&").replace("<", "<").
+ replace(">", ">").replace("\"", """).replace("\n", "<br>");
+ return str;
+ }
+ else
+ return barestr.toString();
+ }
+