我需要检查工作表是否存在。如果存在,您必须键入下一个现有行,并且不要创建新的工作表。
您当前正在删除当前的电子表格,而我在电子表格中只写了一行。
我该如何解决这个问题?
public class ApachePOIExcelWrite {
private static final String FILE_NAME = "c:/viagem.xlsx";
XSSFWorkbook workbook = new XSSFWorkbook();
//name Sheet
XSSFSheet sheet = workbook.createSheet("Viagem");
Object[][] datatypes = {
//head colums
{
"Destino",
"Valor por pessoa",
"Aeroporto",
"Hotel",
"data Pesquisa",
"Hora Pesquisa"
},
{
destino,
pega_valor,
aeroporto.replace("GRU", "Guarulhos").replace("CGH", "Congonhas"),
hotel.replaceAll("Pontos", "Estrelas"),
data_da_pesquisa.format(d),
hora_da_pesquisa.format(d)
}
};
int rowNum = 0;
System.out.println("Creating excel");
for (Object[] datatype: datatypes) {
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for (Object field: datatype) {
Cell cell = row.createCell(colNum++);
if (field instanceof String) {
cell.setCellValue((String) field);
} else if (field instanceof Integer) {
cell.setCellValue((Integer) field);
}
}
}
try {
FileOutputStream outputStream = new FileOutputStream(FILE_NAME);
workbook.write(outputStream);
workbook.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Opens an existing sheet or creates a new one if the given sheet name doesn't exist.
* Appends values after the last existing row.
*/
public static void main(String[] args) throws IOException {
XSSFWorkbook workbook = new XSSFWorkbook("C:\\Users\\Administrator\\Desktop\\test.xlsx");
Sheet sheet = workbook.getSheet("Sheet1");
if (sheet == null)
sheet = workbook.createSheet("Sheet1");
Object[][] values = {{"A2", "B2", "C2"}, {"A3","B3","C3","D3"}};
int initRow = sheet.getLastRowNum() + 1;
int initCol = 0;
for (int i = 0; i < values.length; i++) {
Object[] rowValues = values[i];
for (int j = 0; j < rowValues.length; j++) {
Object value = rowValues[j];
writeValueToCell(value, initRow + i, initCol + j, sheet);
}
}
try {
FileOutputStream fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\output.xlsx");
workbook.write(fos);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void writeValueToCell(Object value, int rowIdx, int colIdx, Sheet sheet) {
Row row = sheet.getRow(rowIdx);
Cell cell;
if (row == null) {
cell = sheet.createRow(rowIdx).createCell(colIdx);
} else {
cell = row.getCell(colIdx);
if (cell == null)
cell = row.createCell(colIdx);
}
if (value == null)
cell.setCellType(Cell.CELL_TYPE_BLANK);
else if (value instanceof String)
cell.setCellValue(value.toString());
else if (value instanceof Integer)
cell.setCellValue((Integer) value);
else if (value instanceof Double)
cell.setCellValue((Double) value);
else if (value instanceof Date) {
cell.setCellValue((Date) value);
CellStyle style = sheet.getWorkbook().createCellStyle();
style.setDataFormat(sheet.getWorkbook().getCreationHelper().createDataFormat().getFormat(("yyyy/m/d")));
cell.setCellStyle(style);
} else {
cell.setCellValue("Unknown type");
}
}
问题内容: 我想用Java编写一个文件而不清除(删除)该文件上的旧数据! 我运行此代码,发现每次运行后,.txt文件上的所有较旧数据都被清除了! 我的代码在这里: 问题答案: 使用可以指示在附加模式下打开文件的构造函数:
我尝试使用Apachepoi库将新工作表添加到现有的excel文件中,如下面的代码所示。 问题是文件中的所有工作表都被删除,只有新工作表存在。 这是什么问题?
问题内容: 我遇到了一个问题。我不知道如何在不将后记留空的情况下删除行。 我正在使用Apache-POI 3.9,使用下一个代码时出现错误: 更新版本: 我找到了解决方案:但是由于每个删除行都减少了lastRowNum,所以我得到了空指针。 这是新版本: 最后更新: ManishChristian帮助我解决了这个问题! 问题答案: 试试下面的代码,它应该可以工作: 每次删除一行都需要减少一。并再次
正如标题所示,我无法使用delete()选项。我在网上发了很多帖子,但都找不到正确的答案。我正在Homestead上使用Laravel5.5(一周前安装,最新版本左右)。 让我给你一些代码,我真的希望有人能帮助我。 这让我头痛,奥氮平快用完了。请告诉我我做错了什么,如果遗漏了什么,请告诉我! 这是我的控制器: 这是我的索引页(索引与后端的管理索引相同: 然后是路线: 然后政策: 最后是中间件: 在
我有一种工作方法,可以在给定键的情况下删除链表中的节点。那时我将节点类嵌套在LinkedList类中,可以直接访问节点类的成员(例如head.next和head.data)。我对代码进行了重构,使其具有一个单独的节点类,并为数据和下一个成员设置了访问器和mutator方法。(我正在准备面试,所以我正在处理许多linkedlist问题,所以我认为有一个单独的类可以让我不必复制和粘贴很多代码。 这是我
我一直在寻找一个答案或一个例子。我开始使用GoogleAPI sheets v4,并找到了将数据附加到电子表格的答案,其中的问题在这个堆栈问题中 尽管该解决方案是功能性的,但它不可伸缩,它以增量方式向工作表中添加值,而不检查标题。我真正想做的是为标题行“Defect”=“x”标题行“Date”=y等添加hashmap之类的值。 有没有人有一个解决这个问题的示例,或者你能告诉我一个可以用来回答这个问