gpt4 book ai didi

java - 在 Apache POI 中按单元格名称设置新单元格值

转载 作者:行者123 更新时间:2023-12-02 08:25:27 25 4
gpt4 key购买 nike

我是 Java 和 Apache POI 的新手,但我得到了这个任务,我必须从命令行读取 Excel 文件的名称以及需要修改的列的名称和值。

所以最终应用程序将像这样运行:java test -f test.xls -i B2=10;B3=20;B4=30

我创建了一个包含单元格名称及其值的 map ,但我不知道如何使用此 map 按名称访问单元格(例如:B2)并设置新值(例如。 : 10)。

到目前为止,我的代码如下:

package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.ss.usermodel.*;

public class ReadExcel {
public static void main(String[] args) throws FileNotFoundException, IOException {
// Will contain cell name / value pair for input cells and output cells
Map<String, String> inputCellsMap = new HashMap<String, String>();
Map<String, String> outputCellsMap = new HashMap<String, String>();

// Open the Excel file
FileInputStream file = new FileInputStream(new File(args[1]));

// Get the current workbook
HSSFWorkbook workbook = new HSSFWorkbook(file);

// Get the first sheet of the workbook
HSSFSheet sheet = workbook.getSheetAt(0);

// Get the input cells that need to be modified and
// store their name and value in the inputCellsMap
for (String element : args[3].split(";")) {
inputCellsMap.put(element.split("=")[0], element.split("=")[1]);
}

// Loop through the cells that need to be modified and
// set the new value in the Excel document
Iterator<Entry<String,String>> iterator = inputCellsMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String,String> entry = (Map.Entry<String,String>) iterator.next();

// TODO
// Get cells by name and set their new value

//System.out.println("Key : " + entry.getKey() + " Value :" + entry.getValue());
}

workbook.close();
}
}

最佳答案

获得条目后,获取单元格引用文本,例如“B2”,以及值。

创建一个 CellReference使用文本。然后你可以获得从0开始的行和列索引,你可以使用这些索引来获取Row,然后是Cell对象,你可以在其上调用setCellValue .

CellReference cr = new CellReference(entry.getKey());
int r = cr.getRow();
int c = cr.getCol();

Row row = sheet.getRow(r);
if (row == null)
row = sheet.createRow(r);
Cell cell = row.getCell(c, Row.CREATE_NULL_AS_BLANK);
cell.setCellValue(entry.getValue());

关于java - 在 Apache POI 中按单元格名称设置新单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com