我正在获得结果哈希映射:
{1=[ACSS Description1, ACSS Description2, ACSS Description3, SACSS Description4], 2=[11, 1, 4, 12]}
我期待:
我根据以下代码获得结果:
那是我的代码:
public void getList(List<ExportReport> listcriteria)
{
Map<Integer, List<String>> hashmap = new HashMap<Integer , List<String>>();
List<String> listpropertyvalue =new ArrayList<String>();
for(int i=0; i < listcriteria.size(); i++)
{
String strValue =listcriteria.get(i).getDescription();
listpropertyvalue.add(strValue);
hashmap.put(1, listpropertyname);
}
listpropertyvalue =new ArrayList<String>();
for(int i=0;i<listcriteria.size();i++){
String strInterValue=listcriteria.get(i).getExportIntervalId().toString();
listpropertyvalue.add(strInterValue);
hashmap.put(2, listpropertvalue);
}
}
Set<Integer> keyset = hashmap.keySet();
int rownum = 1;
int cellnum = 0
for(Integer key : keyset){
Row row = worksheet.createRow(rownum++);
Cell cell = row.createCell(cellnum);
List<String> nameList = hashmap.get(key);
for(Object obj : nameList)
{
if(obj instanceof Date)
{
cell.setCellValue((Date) obj);
}
else if(obj instanceof Boolean)
{
cell.setCellValue((Boolean) obj);
}
else if(obj instanceof String)
{
cell.setCellValue((String) obj);
}
else if(obj instanceof Double)
{
cell.setCellValue((Double) obj);
}
}
cellnum++;
rownum=1;
}
}
我做错了什么?
答案 0 :(得分:1)
很抱歉这个迟到的回复。
使用你的代码,我创建了一个工作程序,初始化一个Excel文件Writesheet.xlsx,每行5行包含5个单元格。另外,我创建了一个包含5个字符串的List。然后我使用getList(List<ExportReport> listcriteria)
方法在Writesheet.xlsx
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Test {
static XSSFWorkbook workbook = new XSSFWorkbook();
public void getList(List<String> listcriteria){
Map<Integer, List<String>> hashmap = new HashMap<Integer , List<String>>();
//create 5 key value pairs
for(int i=0; i < 5; i++){
hashmap.put(i, listcriteria);
}
System.out.println("hashmap : "+hashmap);
Set<Integer> keyset = hashmap.keySet();
int rownum = 0;
int cellnum = 0;
XSSFSheet sheet = workbook.getSheetAt(0);
rownum = 0;
for(Integer key : keyset){
List<String> nameList = hashmap.get(key);
for(String s : nameList){
XSSFRow row = sheet.getRow(rownum++);
Cell cell = row.getCell(cellnum);
if(null!=cell){
cell.setCellValue(s);
}
}
cellnum++;
rownum=0;
}
}
public static void main(String[] args) throws IOException {
//Creation of List from an Array to test getList Method
String[] ss = {"a","b","c","d","e"};
List<String> listcriteria = new ArrayList<String>();
listcriteria.addAll(Arrays.asList(ss));
/***********************************************************/
Test t = new Test();
// Because I put 5 key values pairs in hashmap (see getList method), I create Writesheet.xlsx
// file that contains 5 rows each row contains 5 cell
FileOutputStream out = new FileOutputStream( new File("Writesheet.xlsx"));
XSSFSheet sheet = workbook.createSheet();
for(int i = 0;i<5;i++){
XSSFRow row = sheet.createRow(i);
for(int j=0;j<5;j++)
row.createCell(j);
}
workbook.write(out);
out.close();//end creation of Excel file
// I open Writesheet.xlsx file and write the data on it
InputStream inp = new FileInputStream( new File("Writesheet.xlsx"));
workbook = new XSSFWorkbook(inp);
// listcriteria contains the data that will be written it on Writesheet.xlsx
t.getList(listcriteria);
out = new FileOutputStream( new File("Writesheet.xlsx"));
workbook.write(out);
out.close();
inp.close();
System.out.println("Writesheet.xlsx written successfully" );
}
}
答案 1 :(得分:0)
我只是更改Map<Integer, List<String>> hashmap = new HashMap<Integer , List<String>>();
String[] data1 = {"ACSS Description1", "ACSS Description2", "ACSS Description3", "SACSS Description4"};
List s1 = Arrays.asList(data1);
hashmap.put(1,s1);
String[] data2 = {"11", "1", "4", "12"};
List s2 = Arrays.asList(data2);
hashmap.put(2,s2);
System.out.println("hashmap : "+hashmap);
//the rest of code it is the same
上的代码,以便数据
{1 = [ACSS Description1,ACSS Description2,ACSS Description3,SACSS Description4],2 = [11,1,4,12]}
将把它放在hashmap上。其余的代码仍然是相同的,你可以在Writesheet.xlsx上找到你想要的内容。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Test {
static XSSFWorkbook workbook = new XSSFWorkbook();
public void getList(List<String> listcriteria){
Map<Integer, List<String>> hashmap = new HashMap<Integer , List<String>>();
String[] data1 = {"ACSS Description1", "ACSS Description2", "ACSS Description3", "SACSS Description4"};
List s1 = Arrays.asList(data1);
hashmap.put(1,s1);
String[] data2 = {"11", "1", "4", "12"};
List s2 = Arrays.asList(data2);
hashmap.put(2,s2);
System.out.println("hashmap : "+hashmap);
Set<Integer> keyset = hashmap.keySet();
int rownum = 1;
int cellnum = 0;
XSSFSheet sheet = workbook.getSheetAt(0);
for(Integer key : keyset){
List<String> nameList = hashmap.get(key);
for(String s : nameList){
XSSFRow row = sheet.getRow(rownum++);
Cell cell = row.getCell(cellnum);
if(null!=cell){
cell.setCellValue(s);
}
}
cellnum++;
rownum=1;
}
}
public static void main(String[] args) throws IOException {
//Creation of List from an Array to test getList Method
String[] ss = {"a","b","c","d","e"};
List<String> listcriteria = new ArrayList<String>();
listcriteria.addAll(Arrays.asList(ss));
/***********************************************************/
Test t = new Test();
// Because I put 5 key values pairs in hashmap (see getList method), I create Writesheet.xlsx
// file that contains 5 rows each row contains 5 cell
FileOutputStream out = new FileOutputStream( new File("Writesheet.xlsx"));
XSSFSheet sheet = workbook.createSheet();
for(int i = 0;i<5;i++){
XSSFRow row = sheet.createRow(i);
for(int j=0;j<5;j++)
row.createCell(j);
}
workbook.write(out);
out.close();//end creation of Excel file
// I open Writesheet.xlsx file and write the data on it
InputStream inp = new FileInputStream( new File("Writesheet.xlsx"));
workbook = new XSSFWorkbook(inp);
// listcriteria contains the data that will be written it on Writesheet.xlsx
t.getList(listcriteria);
out = new FileOutputStream( new File("Writesheet.xlsx"));
workbook.write(out);
out.close();
inp.close();
System.out.println("Writesheet.xlsx written successfully" );
}
}
所有带变更的代码
.plist
结果就是这里