Jexcel-使用数据更新excel
我试过使用 更新Vogella中讨论的现有excel工作表 这里的问题是现有excel工作表中已经存在的数据将与新编写的excel数据一起清除 例如,如果我在excel中有这个Jexcel-使用数据更新excel,excel,jxl,Excel,Jxl,我试过使用 更新Vogella中讨论的现有excel工作表 这里的问题是现有excel工作表中已经存在的数据将与新编写的excel数据一起清除 例如,如果我在excel中有这个 <table> <tr> <td>1</td> <td>2 </td> </tr> <tr> <td>3</td> <td>4 </td> </tr> <tab
<table>
<tr>
<td>1</td> <td>2 </td>
</tr>
<tr>
<td>3</td> <td>4 </td>
</tr>
<table>
1 2
3 4
我想在2和4旁边的新单元格中添加数据,如
<table>
<tr>
<td>1</td> <td>2 </td> <td>X </td>
</tr>
<tr>
<td>3</td> <td>4 </td> <td>Y </td>
</tr>
<table>
12倍
34岁
在写程序执行之后,这就是我得到的
<table>
<tr>
<td> </td> <td> </td> <td>X </td>
</tr>
<tr>
<td> </td> <td> </td> <td>Y </td>
</tr>
<table>
Label label;
label = new Label(column, row, s, times);
sheet.addCell(label);
X
Y
标签;
标签=新标签(列、行、s、次);
表。添加单元格(标签);
这是在指定的列和行添加单元格,但删除了excel的其余数据
如何将数据添加到现有excel中并保留数据
以下是程序(参考:Vogella)。Excel工作表中已有20行数据,并且
前两列,我试图在第三列添加20行的数据
excel软件包
import java.io.File;
import java.io.IOException;
import java.util.Locale;
import jxl.CellView;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class WriteExcel {
private WritableCellFormat timesBoldUnderline;
private WritableCellFormat times;
private String inputFile;
public void setOutputFile(String inputFile) {
this.inputFile = inputFile;
}
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("Report", 0);
WritableSheet excelSheet = workbook.getSheet(0);
createLabel(excelSheet);
createContent(excelSheet);
workbook.write();
workbook.close();
}
private void createLabel(WritableSheet sheet) throws WriteException {
// Lets create a times font
WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
// Define the cell format
times = new WritableCellFormat(times10pt);
// Lets automatically wrap the cells
times.setWrap(true);
// Create create a bold font with unterlines
WritableFont times10ptBoldUnderline = new WritableFont(
WritableFont.TIMES, 10, WritableFont.BOLD, false,
UnderlineStyle.SINGLE);
timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
// Lets automatically wrap the cells
timesBoldUnderline.setWrap(true);
CellView cv = new CellView();
cv.setFormat(times);
cv.setFormat(timesBoldUnderline);
cv.setAutosize(true);
}
private void createContent(WritableSheet sheet) throws WriteException,
RowsExceededException {
Integer salary = 1000;
// Now a bit of text
for (int i = 0; i < 20; i++) {
// third column
addLabel(sheet, 2, i, salary.toString());
// WritableCell cell = sheet.getWritableCell(2, i);
// if (cell.getType() == CellType.LABEL) {
// Label l = (Label) cell;
// l.setString("modified cell");
// }
salary += 1000;
}
}
private void addLabel(WritableSheet sheet, int column, int row, String s)
throws WriteException, RowsExceededException {
Label label;
label = new Label(column, row, s, times);
sheet.addCell(label);
}
public static void main(String[] args) throws WriteException, IOException {
WriteExcel test = new WriteExcel();
test.setOutputFile("c:/temp/lars.xls");
test.write();
System.out
.println("Please check the result file under c:/temp/lars.xls ");
}
}
导入java.io.File;
导入java.io.IOException;
导入java.util.Locale;
导入jxl.CellView;
导入jxl.工作簿;
导入jxl.WorkbookSettings;
导入jxl.format.UnderlineStyle;
导入jxl.write.Label;
导入jxl.write.WritableCellFormat;
导入jxl.write.WritableFont;
导入jxl.write.WritableSheet;
导入jxl.write.WritableWorkbook;
导入jxl.write.WriteException;
导入jxl.write.biff.rowseceedexception;
公共类WriteExcel{
私有可写CellFormat timesBoldUnderline;
私有可写单元格式时间;
私有字符串输入文件;
公共void setOutputFile(字符串输入文件){
this.inputFile=inputFile;
}
public void write()引发IOException,WriteException{
文件文件=新文件(inputFile);
WorkbookSettings wbSettings=新建WorkbookSettings();
设置语言环境(新语言环境(“en”、“en”));
WritableWorkbook=workbook.createWorkbook(文件,wbSettings);
工作簿.createSheet(“报告”,0);
WritableSheet excelSheet=workbook.getSheet(0);
createLabel(excelSheet);
createContent(excelSheet);
workbook.write();
workbook.close();
}
私有void createLabel(WritableSheet)引发WriteException{
//让我们创建一个times字体
WritableFont times10pt=新的WritableFont(WritableFont.TIMES,10);
//定义单元格格式
times=新的可写单元格格式(times10pt);
//让我们自动包装单元格
times.setWrap(true);
//创建带有粗体线的字体
WritableFont times10ptBoldUnderline=新的WritableFont(
WritableFont.TIMES,10,WritableFont.BOLD,false,
花柱(单瓣);
timesBoldUnderline=新的可写单元格格式(times10ptBoldUnderline);
//让我们自动包装单元格
timesBoldUnderline.setWrap(true);
CellView cv=新的CellView();
简历格式(次);
cv.setFormat(timesBoldUnderline);
cv.setAutosize(真);
}
私有void createContent(WritableSheet sheet)引发WriteException,
rowseceedexception{
整数工资=1000;
//现在是一段文字
对于(int i=0;i<20;i++){
//第三纵队
addLabel(第2页,i,salary.toString());
//WritableCell=sheet.getWritableCell(2,i);
//if(cell.getType()==CellType.LABEL){
//标签l=(标签)单元;
//l.setString(“修改单元”);
// }
工资+=1000;
}
}
私有void addLabel(可写工作表、int列、int行、字符串s)
抛出WriteException,RowsExcepedException{
标签;
标签=新标签(列、行、s、次);
表。添加单元格(标签);
}
公共静态void main(字符串[]args)抛出WriteException、IOException{
WriteExcel测试=新建WriteExcel();
test.setOutputFile(“c:/temp/lars.xls”);
test.write();
系统输出
.println(“请检查c:/temp/lars.xls下的结果文件”);
}
}
您使用的是可写工作簿
,它在编写上一本可写工作簿的基础上创建了一本新的可写工作簿。要修改现有工作簿,首先必须创建现有工作簿的副本,如下所示:
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"), workbook);
然后再复制。有关更多详细信息,请参阅(提取api的路径)\jexcelapi\src\jxl\demo\ReadWrite.java,或导航到复制和修改页面的电子表格。另一个框架似乎在DataRow上没有任何api来添加特定单元格(行、列)中的数据。您用来创建工作簿的代码是什么?在上面添加了代码。请检查。提供的解决方案是否有效?以下(不幸被拒绝)编辑建议在此处可能有用: