java - 如何使用java在Excel中的多个单元格中写入数据?

标签 java excel apache-poi

我写了一个用于在 Excel 工作表中写入数据的代码。在此我必须将数据写入多个单元格。但它显示了一些错误。对于一个单元格,它能够更改数据。我保留了 for 循环 用于更改多个单元格中的数据。为此它显示错误。 谁能告诉我我在哪里做错了。

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.lang.String;

import javax.swing.JOptionPane;

import jxl.Cell;

import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.ss.formula.functions.Column;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFComment;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class Sele1
{

    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        String FileName = "C:\\Users\\u304081\\Desktop\\Java\\new.xlsx";

        try 
        {
            FileInputStream fileInputStream3 = new FileInputStream(FileName);
            File outputsheetfile1 = new File(FileName);
            if(outputsheetfile1.exists()) 
            {
                System.out.println("File existed");
                try
                {
                    XSSFWorkbook ObjWorkBook = new XSSFWorkbook(fileInputStream3);
                    XSSFSheet DriverTableSheet = ObjWorkBook.getSheetAt(0);
                    for(int i=1;i<3;i++)
                    {
                    XSSFRow row1 = DriverTableSheet.getRow(i);
                    XSSFCell Cell1 = row1.getCell(0);

                    System.out.println("Cell1"+ Cell1);
                    //System.out.println("Cell2"+ Cell2);
                     String str = "Abc";
                     Cell1.setCellValue(str);

                     FileOutputStream out1 = new FileOutputStream (FileName,false);
                     ObjWorkBook.write(out1);
                     fileInputStream3.close();
                    }

                } 
            catch (IOException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }
    }

我得到的错误是:

ObjWorkBook.write(out1);

`"poi-bin-3.9-20121203\poi-3.9\poi-ooxml-3.9-20121203.jar has no source attachment"`

最佳答案

        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("Course Pack Resolution Details");
        outputFileName = outPut.getAbsolutePath(); 
        int rownum = 0;`enter code here`
        for (int i = 0; i < dataList.size(); i++) {
            Object[] objArr = dataList.get(i);
            HSSFRow row = sheet.createRow(rownum++);

            int cellnum = 0;
            for (Object obj : objArr) {
                Cell cell = row.createCell(cellnum++);
                sheet.autoSizeColumn((short) 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);
                }
            }
        }
        if (outPut.exists()) {
            outPut.delete();
        }
        FileOutputStream out =
                new FileOutputStream(outPut);
        workbook.write(out);

DataList 是 Array Object 的 ArrayList,因此您可以在 init 中输入任意多的数据。

数据列表示例:

dataList.add(new Object[]{"Sr No.", "Cols1", "cols2", "cols3"......."colsn"});

您可以在列表中插入的各个数据。此示例适用于 .xls 格式,如果您需要 .xlsx,则使用 xssfworkbook。

可能对你有帮助。

关于java - 如何使用java在Excel中的多个单元格中写入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19655813/

相关文章:

java - 快速写入 : Memory-Mapped file versus BufferedWriter

java - 滚动 Pane 不工作

java - 如何编写使用 Excel 文件的 RestService 帖子?

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

java - org.apache.poi.poifs.filesystem.OfficeXmlFileException

java - java.lang.ClassCastException : oracle. xdb.XMLType 与 oracle.sql.OPAQUE 不兼容的任何建议解决方案

java - 逐一检查球的四个边是否与墙壁相撞的方法

java - Spring MVC 中的 Xml View 解析器不起作用

Excel VBA刷新等待

java - excel 文件转为带分隔符的 dat 文件