Я новичок в сервлете, пожалуйста, помогите мне. Я создал файл сервлета, в котором один файл Excel содержит некоторые данные от пользователя. данные печатаются через строку. Теперь большинство данных печатаются в соответствии с ожиданиями, но теперь я хочу напечатать данные, хранящиеся в массиве, в определенной ячейке таблицы Excel и в определенном формате. пожалуйста, предоставьте предоставленную фотографию для формата, который я ожидаю. а также обратитесь к моему коду для лучшего понимания. Основная цель - распечатать массив хранимых данных в определенной ячейке таблицы Excel. Пожалуйста, помогите мне с кодом, потому что я действительно новичок в сервлетах. см. ссылку ссылка
testExcel
@WebServlet("/testExcel")
public class testExcel extends HttpServlet {
private static final long serialVersionUID = 1L;
String emails = "xyz@gmail.com";
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
processRequest(req, resp);
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
OutputStream writer = response.getOutputStream();
// FileWriter writer =null;
ResultSet rs = null;
ResultSet rs1 = null;
Connection con = null;
ArrayList data_ar = new ArrayList();
String str = "";
PreparedStatement ps = null;
PreparedStatement ps1 = null;
try {
String fileName = emails + "data.csv";
System.out.println(fileName);
ServletContext context = getServletContext();
String mimeType = context.getMimeType(fileName);
if (mimeType == null) {
mimeType = "application/octet-stream";
}
response.setContentType(mimeType);
String headerKey = "Content-Disposition";
String headerValue = String.format("attachment; filename=\"%s\"", fileName);
response.setHeader(headerKey, headerValue);
ConnectionClass cn = new ConnectionClass();
con = cn.connectDb();
System.out.println("fileName" + fileName);
//Write the CSV file header
CSVUtil.writeLine(writer, Arrays.asList("NAME", "email", " ", " ", " ", "NAME AND EMAIL"));
ps = con.prepareStatement("select name,email from user");
rs = ps.executeQuery();
ps1 = con.prepareStatement("select name,email from user");
rs1 = ps1.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name"));
CSVUtil.writeLine(writer, Arrays.asList(rs.getString("name"), rs.getString("email")));
}
while (rs1.next()) {
data_ar.add(rs1.getString("name") + " " + rs1.getString("email") + "\n");
}
str = String.join(" ", data_ar);
CSVUtil.writeLine(writer, Arrays.asList(" ", " ", " ", " ", " ", str));
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
ps.close();
con.close();
} catch (Exception e) {
}
}
}
}
csvutil.java
public class CSVUtil {
private static final char DEFAULT_SEPARATOR = ',';
public static void writeLine(OutputStream w, List<String> values) throws IOException {
writeLine(w, values, DEFAULT_SEPARATOR, ' ');
}
public static void writeLine(OutputStream w, List<String> values, char separators) throws IOException {
writeLine(w, values, separators, ' ');
}
// https://tools.ietf.org/html/rfc4180
private static String followCVSformat(String value) {
String result = value;
if (result.contains("\"")) {
result = result.replace("\"", "\"\"");
}
return result;
}
public static void writeLine(OutputStream w, List<String> values, char separators, char customQuote) throws IOException {
boolean first = true;
// default customQuote is empty
if (separators == ' ') {
separators = DEFAULT_SEPARATOR;
}
StringBuilder sb = new StringBuilder();
for (String value : values) {
if (!first) {
sb.append(separators);
}
if (customQuote == ' ') {
sb.append(followCVSformat(value));
} else {
sb.append(customQuote).append(followCVSformat(value)).append(customQuote);
}
first = false;
}
sb.append("\n");
String str = sb.toString();
byte[] bytes = str.getBytes(Charset.forName("UTF-8"));
w.write(bytes);
}
}