如何获取ListAdapter的值到工作簿单元格

我正在从我的应用程序创build一个工作簿。 我从sqlite获取数据的Arraylist,然后使用ListAdapter来查看它。 我可以保存到工作簿就好了。 这些行显示数据,但它们显示的是来自查询的原始数据,如Personfirstname = John,而Personlastname = Doe全部在一个单元格中。 那不是我想要的。 我想要的是在单元格1中看到John,在单元格2中看到John,在单元格2的第2行看到Jane,在行2的单元格2中看到了doe。我知道我需要对ListAdapter做些什么,我只是不知道该怎么做做。

这是我的代码(我使用apache.poi jar)

ArrayList<HashMap<String, String>> test = controller .getAllpersons(value1,value2); ListAdapter adapter1 = new SimpleAdapter(Persons.this, test, R.layout.rowsales, new String[] { "NamesId", "personfirstname","personlastname }, new int[] {R.id.NamesId, R.id.personfirstname,R.id.personlastname}); for (int i = 0; i < test.size(); i++) { Row row2 = sheet1.createRow((short) i+3); c = row2.createCell(0); System.out.println(test.get(i)); c.setCellValue(test.get(i).toString()); c.setCellStyle(s); } 

您的问题实际上不是POI代码(主要是)…

你的问题是这两行:

 ArrayList<HashMap<String, String>> test = controller .getAllpersons(value1,value2); c.setCellValue(test.get(i).toString()); 

你的variablestest是哈希映射列表。 这些地图将被按键索引,你想要的东西将在价值。 但是,你忽略了地图查找,只是把整个地段拿出来变成一个string。

假设你传递给SimpleAdapterString[]是地图的键,那么你需要做的是:

 Workbook wb = new HSSFWorkbook(); Sheet s1 = wb.createSheet(); for (int i=0; i<test.size(); i++) { String firstname = Row r = s1.createRow(i); Map<String,String> personData = test.get(i); Cell fn = r.createCreateCell(0, Cell.CELL_TYPE_STRING); fn.setCellValue(data.get("personfirstname")); Cell ln = r.createCreateCell(1, Cell.CELL_TYPE_STRING); ln.setCellValue(data.get("personlastname")); }