Java 使用jxl将数据添加到Excel文件
我正在使用jxl创建一个excel文件。首先,is应该只包含一些格式和有关样式的信息。然后,它应该在每次有人向它添加新数据时更新Java 使用jxl将数据添加到Excel文件,java,excel,jxl,Java,Excel,Jxl,我正在使用jxl创建一个excel文件。首先,is应该只包含一些格式和有关样式的信息。然后,它应该在每次有人向它添加新数据时更新 public class WriteExcel { private static WritableWorkbook workbook; private static WritableCellFormat timesStandard; private String inputFile; final private static int
public class WriteExcel {
private static WritableWorkbook workbook;
private static WritableCellFormat timesStandard;
private String inputFile;
final private static int FONT_SIZE = 12;
public void setOutputFile(String inputFile) {
this.inputFile = inputFile;
}
private void prepareSheet(WritableSheet sheet) throws WriteException {
sheet.mergeCells(0, 0, 1, 0);
sheet.mergeCells(3, 0, 4, 0);
sheet.mergeCells(6, 0, 7, 0);
WritableFont times12pt = new WritableFont(WritableFont.TIMES, FONT_SIZE);
timesStandard = new WritableCellFormat(times12pt);
CellView cv = new CellView();
cv.setFormat(timesStandard);
}
public void write() throws IOException, WriteException {
File file = new File(inputFile);
WorkbookSettings wbSettings = new WorkbookSettings();
wbSettings.setLocale(new Locale("en", "EN"));
WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
workbook.createSheet("First", 0);
WritableSheet excelSheet = workbook.getSheet(0);
prepareSheet(excelSheet);
workbook.write();
workbook.close();
}
public static void main(String[] args) throws WriteException, IOException {
WriteExcel test = new WriteExcel();
test.setOutputFile("c:/Users/H/Desktop/test.xls");
test.write();
}
}
我知道我需要另一个类来访问文件并向其中添加一些数据:
class Modify {
private static Logger logger = Logger.getLogger(Modify.class);
private File inputWorkbook;
private File outputWorkbook;
public Modify(String input, String output) {
inputWorkbook = new File(input);
outputWorkbook = new File(output);
logger.info("Input file: " + input);
logger.info("Output file: " + output);
}
public void readWrite() throws IOException, BiffException, WriteException {
logger.info("Reading...");
Workbook w1 = Workbook.getWorkbook(inputWorkbook);
logger.info("Copying...");
WritableWorkbook w2 = Workbook.createWorkbook(outputWorkbook, w1);
if (inputWorkbook.getName().equals("test.xls")) {
modify(w2);
}
w2.write();
w2.close();
logger.info("Done");
}
private void modify(WritableWorkbook w) throws WriteException {
logger.info("Modifying...");
WritableSheet sheet = w.getSheet("First");
//createContent(sheet); // contains methods responsible for adding data, for example:
addNumber(sheet, cols, rows, 2);
private static void addNumber(WritableSheet sheet, int column, int row, double d) throws WriteException, RowsExceededException {
Number number;
number = new Number(column, row, d, timesStandard);
sheet.addCell(number);
}
}
但我最终得到一个只有合并单元格的空白Excel文件
如何引入修改?既然您正在操作一个
可写工作簿
对象,而该对象不是w2
的类成员,那么您的modify()
方法不应该无效,而应该返回一个可写工作簿
在我看来,当您调用modify()
时,会实例化一个新的实例,但由于作用域的原因,最后的所有更改都会被删除
最后你会得到类似的结果
private WritableWorkbook modify(WritableWorkbook w) throws WriteException {
logger.info("Modifying...");
WritableSheet sheet = w.getSheet("First");
//createContent(sheet); // contains methods responsible for adding data, for example:
addNumber(sheet, cols, rows, 2);
return sheet;
}
基本上。对addNumber进行类似的修改似乎也很合适。
然后相应的调用将是
sheet=addNumber(sheet,cols,rows,2)代码>和w2=修改(w2)代码>我没有一个解决方案,只是建议切换到。这只是基本操作,jxl应该可以。