Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环创建列表内的行循环_Java_Excel_Netbeans_Apache Poi - Fatal编程技术网

Java 循环创建列表内的行循环

Java 循环创建列表内的行循环,java,excel,netbeans,apache-poi,Java,Excel,Netbeans,Apache Poi,我想制作一个Excel工作表,如下所示: NAME | ADDRESS | PH ==================== Dad | IND | 123 Mom | IND | 123 Me | IND | 123 Dad、Mom和Me都在列表中。我已经试过编写代码了,但似乎错了。它不逐行写入,而是覆盖每个循环中的所有内容。代码如下: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb

我想制作一个Excel工作表,如下所示:

NAME | ADDRESS | PH 
==================== 
Dad  |   IND   | 123 
Mom  |   IND   | 123 
Me   |   IND   | 123 
Dad
Mom
Me
都在列表中。我已经试过编写代码了,但似乎错了。它不逐行写入,而是覆盖每个循环中的所有内容。代码如下:

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

Row row1 = sheet.createRow((short) 0);
row1.createCell(0).setCellValue("Name");
row1.createCell(1).setCellValue("Address");
row1.createCell(2).setCellValue("Ph");

List<pegawai> list_pegawai = test.list_pegawai();
int a = list_pegawai.size();
for (pegawai p : list_pegawai) {
    for (i = 1; i <= a; i++) {
         Row row2 = sheet.createRow((short) i);
         row2.createCell(0).setCellValue(p.getName());
         row2.createCell(1).setCellValue(p.getAddress());
         row2.createCell(2).setCellValue(p.getPh());
    }
}
FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Documents\\workbook.xls");
wb.write(fileOut);
fileOut.close();
JOptionPane.showMessageDialog(null, "SUCCESS");
HSSFWorkbook wb=新的HSSFWorkbook();
HSSFSheet sheet=wb.createSheet(“新工作表”);
行row1=sheet.createRow((短)0);
行1.createCell(0.setCellValue(“名称”);
行1.createCell(1.setCellValue(“地址”);
行1.createCell(2.setCellValue(“Ph”);
List_pegawai=test.List_pegawai();
int a=list_pegawai.size();
对于(pegawai p:list_pegawai){

对于(i=1;i请尝试在下面的代码行中使用java制作excel工作表。在这两行代码之间,您可以使用任何api从数据库中插入数据以进行数据库调用

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] {"Emp No.", "Name", "Salary"});
data.put("2", new Object[] {1d, "John", 1500000d});
data.put("3", new Object[] {2d, "Sam", 800000d});
data.put("4", new Object[] {3d, "Dean", 700000d});

Set<String> keyset = data.keySet();
short rownum = 0;
for (String key : keyset) {
    HSSFRow row = sheet.createRow(rownum++);
    Object [] objArr = data.get(key);
    int cellnum = 0;
    for (Object obj : objArr) {
        HSSFCell cell = row.createCell(cellnum++);
        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);
    }
}

try {
    FileOutputStream out = new FileOutputStream(new File("D:\\new.xls"));
    workbook.write(out);
    out.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
HSSFWorkbook工作簿=新的HSSFWorkbook();
HSSFSheet sheet=workbook.createSheet(“样本表”);
映射数据=新的HashMap();
数据.put(“1”,新对象[]{“Emp编号”,“名称”,“薪资”});
data.put(“2”,新对象[]{1d,“John”,1500000d});
data.put(“3”,新对象[]{2d,“Sam”,800000d});
data.put(“4”,新对象[]{3d,“Dean”,700000d});
Set keyset=data.keyset();
短rownum=0;
用于(字符串键:键集){
HSSFRow行=sheet.createRow(rownum++);
Object[]objArr=data.get(key);
int-cellnum=0;
用于(对象对象对象:对象对象对象){
HSSFCell cell=row.createCell(cellnum++);
if(obj实例截止日期)
cell.setCellValue((日期)obj);
else if(obj instanceof Boolean)
cell.setCellValue((布尔)obj);
else if(字符串的obj实例)
cell.setCellValue((字符串)obj);
else if(双精度的obj实例)
cell.setCellValue((双)obj);
}
}
试一试{
FileOutputStream out=新的FileOutputStream(新文件(“D:\\new.xls”);
练习册。写(出);
out.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}

尝试在下面的代码行中使用java制作excel工作表。在这两行之间,您可以使用任何api从数据库中插入数据以进行数据库调用

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] {"Emp No.", "Name", "Salary"});
data.put("2", new Object[] {1d, "John", 1500000d});
data.put("3", new Object[] {2d, "Sam", 800000d});
data.put("4", new Object[] {3d, "Dean", 700000d});

Set<String> keyset = data.keySet();
short rownum = 0;
for (String key : keyset) {
    HSSFRow row = sheet.createRow(rownum++);
    Object [] objArr = data.get(key);
    int cellnum = 0;
    for (Object obj : objArr) {
        HSSFCell cell = row.createCell(cellnum++);
        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);
    }
}

try {
    FileOutputStream out = new FileOutputStream(new File("D:\\new.xls"));
    workbook.write(out);
    out.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
HSSFWorkbook工作簿=新的HSSFWorkbook();
HSSFSheet sheet=workbook.createSheet(“样本表”);
映射数据=新的HashMap();
数据.put(“1”,新对象[]{“Emp编号”,“名称”,“薪资”});
data.put(“2”,新对象[]{1d,“John”,1500000d});
data.put(“3”,新对象[]{2d,“Sam”,800000d});
data.put(“4”,新对象[]{3d,“Dean”,700000d});
Set keyset=data.keyset();
短rownum=0;
用于(字符串键:键集){
HSSFRow行=sheet.createRow(rownum++);
Object[]objArr=data.get(key);
int-cellnum=0;
用于(对象对象对象:对象对象对象){
HSSFCell cell=row.createCell(cellnum++);
if(obj实例截止日期)
cell.setCellValue((日期)obj);
else if(obj instanceof Boolean)
cell.setCellValue((布尔)obj);
else if(字符串的obj实例)
cell.setCellValue((字符串)obj);
else if(双精度的obj实例)
cell.setCellValue((双)obj);
}
}
试一试{
FileOutputStream out=新的FileOutputStream(新文件(“D:\\new.xls”);
练习册。写(出);
out.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
试试看

您已经在列表中迭代,无需重复两次。您不想每次都创建一个新的



您已经在列表中进行了迭代,无需重复两次。您不希望每次都创建一个新的
那么问题出在哪里?什么是test.list_pegawai();?test.list_pegawai()用于调用查询select from database。问题是我的代码运行的次数与listsize相同,并覆盖它。那么问题出在哪里?什么是test.list_pegawai();?test.list_pegawai()用于调用查询从数据库中选择。问题是我的代码运行的次数与listsize一样多并覆盖它。为什么要创建一个int变量,然后转换为short?感谢您的代码!但是我可以问一下,那里的键集是什么?它只是一组从数据映射(HashMap)获取数据的键我们在前面创建了。因此,键集包含值1、2、3、4,在本例中就是这样。为什么要创建一个int变量,然后转换为short?感谢您的代码!但我可以问一下,那里的键集是什么吗?它只是一组从数据映射(HashMap)获取数据的键我们在前面创建了。因此键集包含值1,2,3,4,在本例中就是这样。哦,所以我们可以在createrow上使用i++。我认为我们必须使用((短)1)或((短)变量)今天我上了新课。谢谢你的帮助!我将
I
重新定义为short,因此不需要施法。你为什么在create row调用中使用
short
?如果你看一下,你会发现它需要int而不是short…@Gagravarr所以我只使用rownum?请参考你的链接。@ScaryWombat如果我使用int not short怎么办?我可以吗?哦,这样我们就可以了我想我们必须使用((短)1)或((短)变量)我今天上了新课。谢谢你的帮助!我将
I
重新定义为short,因此不需要施法。你为什么在create row调用中使用
short
?如果你看一下,你会发现它需要int而不是short…@Gagravarr所以我只使用rownum?请参考你的链接。@ScaryWombat如果我使用int not short怎么办?我可以吗?