我写了一个用于在 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/