Я экспортировал набор результатов в лист Excel с экспортированным Excel в конце.
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.BasicConfigurator;
import org.apache.poi.hpsf.Array;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class DF3 {
public static void main(String[] args) {
String dayno;
/// variables
BasicConfigurator.configure();
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("UserIDs");
//XSSFRow headerRow = spreadsheet.createRow(0);
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
}
catch(ClassNotFoundException cnfex) {
System.out.println("Problem in loading" + " MS Access JDBC driver");
cnfex.printStackTrace();
}
try {
String AccessDBName = "C:\\Users\\cderf\\Desktop\\assignment\\cderf.accdb";
String dbURL = "jdbc:ucanaccess://"+ AccessDBName;
connection = DriverManager.getConnection(dbURL);
statement = connection.createStatement();
resultSet = statement.executeQuery("SELECT ID_CLERK, NAM_FIRST, NAM_LAST, LAST_LOGIN ORGID FROM cderf where cde_status = 'A' and nam_role = 'Security Admin'");
XSSFRow row = spreadsheet.createRow(0);
XSSFCell cell;
cell = row.createCell(0);
cell.setCellValue("ID_CLERK");
cell = row.createCell(1);
cell.setCellValue("NAM_FIRST");
cell = row.createCell(2);
cell.setCellValue("NAM_LAST");
cell = row.createCell(3);
cell.setCellValue("LAST_LOGIN");
int i = 1;
while(resultSet.next()) {
row = spreadsheet.createRow(i);
cell = row.createCell(0);
cell.setCellValue(resultSet.getString("ID_CLERK"));
cell = row.createCell(1);
cell.setCellValue(resultSet.getString("NAM_FIRST"));
cell = row.createCell(2);
cell.setCellValue(resultSet.getString("NAM_LAST"));
//cell = row.createCell(3);
//cell.setCellValue(resultSet.getString("LAST_LOGIN"));
cell = row.createCell(3);
dayno= resultSet.getString("LAST_LOGIN");
if(dayno.length()<8) {
String day = dayno.substring(1, 5).trim();
int date = Integer.parseInt(day) +1;
int retrodate = getDate(date);
cell.setCellValue(retrodate);
}
else {
cell.setCellValue(resultSet.getString("LAST_LOGIN"));
}
i++;
}
/* Sheet sheet = workbook.getSheetAt(0);
Cell cell2Update = sheet.getRow(1).getCell(3);
cell2Update.setCellValue("=TODAY()-189");*/
String outputDirPath = "C:\\Users\\dddd\\Desktop\\eclipse\\Workspacevl\\DBTest\\ExportedExcels\\UID_SHEET.xlsx";
FileOutputStream fileOut = new FileOutputStream(outputDirPath);
workbook.write(fileOut);
fileOut.close();
resultSet.close();
connection.close();
}
catch(SQLException sqlex){
sqlex.printStackTrace();
}
catch(IOException e) {
}
}
private static String[] resultSet() {
// TODO Auto-generated method stub
return null;
}
public static int getDate(int date){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -date); //minus number would decrement the days
SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMdd");
return (Integer.parseInt(sdf.format(cal.getTime()).toString()));
}
}
Но я бы хотел изменить код так, чтобы можно было экспортировать более уточненные результаты на основе дат Last_login, например, пользователь вставляет два диапазона дат bw 20180709 и 20181231 на переднюю страницу, экспортируемый лист должен только содержит данные, соответствующие дате last_login. Можно ли использовать массив, чтобы я мог экспортировать набор результатов, используя условие с указанием даты.
Я не знаю, подходит ли массив для кодирования, в основном, учусь, так что помогите плз.
Отпечатано в Excel:
I
ID_CLERK NAM_FIRST NAM_LAST LAST_LOGIN
-------- --------- -------- ----------
BHEI00 ddadf ddd 20181009
CMCRdT2 dvvcf ffffad 20180708
FFLN0 ass ghiuhkkj 20180827
Hfhudd2 HddaD MdffrTT 20181105
Ldfss0 labA ronSON 20181105
MadfLA ngams anddas 20181021
TdsfS1 TED bark 20181105