Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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 HSSF附加到现有excel文件_Java_Excel_Apache Poi_Poi Hssf - Fatal编程技术网

如何使用Java HSSF附加到现有excel文件

如何使用Java HSSF附加到现有excel文件,java,excel,apache-poi,poi-hssf,Java,Excel,Apache Poi,Poi Hssf,我对Java还比较陌生,已经拼凑了足够的代码,可以将数据写入新的excel文件。但是,我希望它写入(追加到末尾)现有文件。prepareDataToWriteToExcel()获取一些数据以写入3列数据 public List writeDataToExcelFile(String fileName) throws IOException { Map excelData = prepareDataToWriteToExcel(); List receiversList=new

我对Java还比较陌生,已经拼凑了足够的代码,可以将数据写入新的excel文件。但是,我希望它写入(追加到末尾)现有文件。prepareDataToWriteToExcel()获取一些数据以写入3列数据

public List writeDataToExcelFile(String fileName) throws IOException {
    Map excelData = prepareDataToWriteToExcel();
    List receiversList=new  ArrayList();
    HSSFWorkbook myWorkBook = new HSSFWorkbook();
    HSSFSheet mySheet = myWorkBook.createSheet();
    HSSFRow myRow = null;
    HSSFCell myCell = null;
    Iterator it=excelData.entrySet().iterator(); 
    int rowNum=0;
    while (it.hasNext()) {
        myRow = mySheet.createRow(rowNum);
        Map.Entry pairs = (Map.Entry)it.next();
        String[]arr= (String[]) pairs.getValue();
        for (int cellNum = 0; cellNum < arr.length ; cellNum++){
            myCell = myRow.createCell((short) cellNum);
            myCell.setCellValue(arr[cellNum]);     
        }
        receiversList.add(arr[2]);
        rowNum++;
    }
    try{
        FileOutputStream out = new FileOutputStream(fileName);
        myWorkBook.write(out);
        System.out.println("WRITING TO EXCEL COMPLETED");
        out.close();
    }catch(Exception e){}  
    return receiversList;
}
公共列表WriteDataoExcelFile(字符串文件名)引发IOException{
Map excelData=prepareDataToWriteToExcel();
List receiversList=new ArrayList();
HSSFWorkbook myWorkBook=新建HSSFWorkbook();
HSSFSheet mySheet=myWorkBook.createSheet();
HSSFRow myRow=null;
HSSFCell-myCell=null;
迭代器it=excelData.entrySet().Iterator();
int rowNum=0;
while(it.hasNext()){
myRow=mySheet.createRow(rowNum);
Map.Entry pairs=(Map.Entry)it.next();
字符串[]arr=(字符串[])对。getValue();
for(int-cellNum=0;cellNum
我发现这是更新现有excel工作表的一个很好的例子。正如您所注意到的,您使用要修改的文件创建工作簿。这将允许您找到可以创建新列和写入数据的位置

try {
    FileInputStream file = new FileInputStream(new File("C:\\update.xls"));

    HSSFWorkbook workbook = new HSSFWorkbook(file);
    HSSFSheet sheet = workbook.getSheetAt(0);
    Cell cell = null;

    // Find empty cell     

    // Update the value of cell

    file.close();

    FileOutputStream outFile = new FileOutputStream(new File("C:\\update.xls"));
    workbook.write(outFile);
    outFile.close();

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

签出您是否必须读入现有数据并使用新数据写入以生成附加类型的功能?是。如果你没有读进去,你怎么知道把它附加到哪里?添加数据时,指定的是行和单元格编号。这些值必须在已经存在的数据之后。这不仅仅是一个可以附加到末尾的纯文本文件:)