0
我試圖從SQL表中提取數據並將其寫入Excel工作表。將數據寫入Excel中的問題
我目前正在創建一個HashMap - HashMap<Integer, ArrayList<String>> tblDataMap = new HashMap<Integer, ArrayList<String>>()
並將表中的所有數據寫入hashmap。
當我嘗試寫出相同的東西來超越,只有最後一列被寫入,其餘的列是空白的。
下面是我的代碼迭代。
public String writeDataToExcel(String fileLoc, String tblName)
{
try{
LisaDBUtil lisaDb = new LisaDBUtil();
HashMap<Integer, ArrayList<String>> tblDataMap = lisaDb.getTableDetails(tblName);
System.out.println("Map : " +tblDataMap.toString());
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet(tblName);
Integer rowCount = 0;
Integer key = 1;
short col = 0;
ArrayList<String> tmpArr = null;
while(tblDataMap.containsKey(key))
{
tmpArr = tblDataMap.get(key);
System.out.println("tmpArr : " +tmpArr.toString());
for (String val : tmpArr)
{
XSSFRow row = sheet.createRow(rowCount);
System.out.println("Cell value : " +val +"Col : " +col);
XSSFCell cell = row.createCell(col);
cell.setCellValue(val);
System.out.println("Cel Value set : " +cell.getColumnIndex() +cell.getRowIndex());
col++;
sheet.autoSizeColumn(col);
}
col = 0;
rowCount++;
key++;
System.out.println("row value : " +rowCount);
}
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//get current date time with Date()
Date date = new Date();
System.out.println(dateFormat.format(date));
//Write the workbook in file system
FileOutputStream out = new FileOutputStream(new File(fileLoc+"/"+tblName+"_"+dateFormat.format(date)+".xlsx"));
workbook.write(out);
out.close();
FILE_CREATION_STATUS = "success";
System.out.println("Excel written successfully on disk.");
}
catch (Exception e)
{
e.printStackTrace();
}
return FILE_CREATION_STATUS;
}
我能夠看到單元格值設置正確..請在控制檯日誌下面找到。
Map : {1=[tdm_id, Account_No, Customer_Name, IACode, Supp_Account], 2=[1001, 9384938493, Sindhu, YW, 34545655667], 3=[1002, 9486958958, Ussanar, LLB, 656565576], 4=[1003, 8568632432, XYZ, YB, 45654654654]}
tmpArr : [tdm_id, Account_No, Customer_Name, IACode, Supp_Account]
Cell value : tdm_idCol : 0
Cel Value set : 00
Cell value : Account_NoCol : 1
Cel Value set : 10
Cell value : Customer_NameCol : 2
Cel Value set : 20
Cell value : IACodeCol : 3
Cel Value set : 30
Cell value : Supp_AccountCol : 4
Cel Value set : 40
row value : 1
tmpArr : [1001, 9384938493, Sindhu, YW, 34545655667]
Cell value : 1001Col : 0
Cel Value set : 01
Cell value : 9384938493Col : 1
Cel Value set : 11
Cell value : SindhuCol : 2
Cel Value set : 21
Cell value : YWCol : 3
Cel Value set : 31
Cell value : 34545655667Col : 4
Cel Value set : 41
row value : 2
tmpArr : [1002, 9486958958, Ussanar, LLB, 656565576]
Cell value : 1002Col : 0
Cel Value set : 02
Cell value : 9486958958Col : 1
Cel Value set : 12
Cell value : UssanarCol : 2
Cel Value set : 22
Cell value : LLBCol : 3
Cel Value set : 32
Cell value : 656565576Col : 4
Cel Value set : 42
row value : 3
tmpArr : [1003, 8568632432, XYZ, YB, 45654654654]
Cell value : 1003Col : 0
Cel Value set : 03
Cell value : 8568632432Col : 1
Cel Value set : 13
Cell value : XYZCol : 2
Cel Value set : 23
Cell value : YBCol : 3
Cel Value set : 33
Cell value : 45654654654Col : 4
Cel Value set : 43
row value : 4
2013-11-28
Excel written successfully on disk.
Status : success
單元格正確迭代並且值設置正確。但是一旦生成了excel,只有一列中有值。有人請幫忙。
您還應該將'sheet.autoSizeColumn'調用拉到最後 - 這是一個昂貴的調用,您不希望每行處理它,只是在處理結束時 – Gagravarr