java如何从excel模板读取数据,然后再动态写入数据输出到另外一个excel文件呢?请高手指教,最好有代码例子,谢谢啦 java如何从excel模板读取数据,然后再动态写入数据输出到另外一个excel文件呢?请高手指教,最好有代码例子,谢谢啦:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package jxml;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.List;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;public class Myjxml { /** * @param args */ static SAXBuilder sab = new SAXBuilder(false); public static void main(String[] args) throws JDOMException, IOException { // TODO Auto-generated method stub Document doc=sab.build("D:\\uaapConsole\\javalx\\src\\jxml\\testxml.xml"); Element root=doc.getRootElement();//获得根节点 //Document root1=doc.getDocument(); //System.out.println(root.getChild("usertest")); //System.out.println(root.getValue());//输出子节点的值 //System.out.println(root.getChildren().isEmpty());//是否为空 List alist=(List) root.getChildren("usertest"); //NodeList students = root.get String xls="D:\\uaapConsole\\javalx\\src\\jxml\\"; String xls1=null; for(int i=0;i<alist.size();i++) { //System.out.println(i); Element item=(Element)alist.get(i);////取得节点实例 //(Element)booklist.get(i) String name=item.getChild("name").getText(); String name1=item.getChild("pass").getText(); boolean a=item.getChildren().isEmpty(); System.out.println(a); xls1=xls+name; } System.out.println(xls1+"文件所在的路径!!"); File f=new File(xls1); if(f.exists()) { System.out.println("文件已经存在!!");} else{ f.createNewFile(); } String s=f.getPath(); System.out.println(s); System.out.println(f.getParentFile());//所在位置 jxl.Workbook rwb = null; try { InputStream is = new FileInputStream(xls1); System.out.println(is); // Sheet rs = rwb.getSheet(0); //rwb = Workbook.getWorkbook(is); rwb = Workbook.getWorkbook(is); Sheet sh=rwb.getSheet(0); int a=sh.getColumns(); int b=sh.getRows(); System.out.println(a+"--"+b); for (int i=0;i<a;i++) { for(int c=0;c<b;c++) { Cell cell=sh.getCell(i, c); System.out.println(cell.getContents()); } } String xls2="D:\\uaapConsole\\javalx\\src\\jxml\\xls2.xls"; File ff=new File(xls2); if(!ff.exists()) {ff.createNewFile();} jxl.write.WritableWorkbook workbook=null; try { workbook = Workbook.createWorkbook(new File(xls2)); } catch (IOException e) { e.printStackTrace(); } jxl.write.WritableSheet ws=null; if(!(workbook==null)){ ws= workbook.createSheet("sheet1", 0); } for(int i=0;i<=15;i++){ for(int c=0;c<=15;c++) { Label labelC = new Label(i, c, "这是第"+(i+1)+"行,第"+(c+1)+"列"); try { System.out.print(c); //将生成的单元格添加到工作表中 ws.addCell(labelC); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } try { //从内存中写入文件中 workbook.write(); //Workbook.write(); //关闭资源,释放内存 workbook.close(); } catch (IOException e) { e.printStackTrace(); } // WritableSheet ws = wwb.createSheet("sheet1", 0); } catch (BiffException e) { // TODO Auto-generated catch block e.printStackTrace(); } }} 我也希望用poi,哪些大侠有poi的例子啦?网上搜的,都没有读模板啊,而且输出文件也都是原文件的。 import java.io.*; import jxl.*; import jxl.write.*; public class UpdateXLS { public static void main(String args[]) { try { //Excel获得文件 Workbook wb=Workbook.getWorkbook(new File(“模板.xls”)); //打开一个文件的副本,并且指定数据写回到原文件 WritableWorkbook book= Workbook.createWorkbook(new File(“输出.xls”),wb); //添加一个工作表 WritableSheet sheet=book.createSheet(“第二页”,1); sheet.addCell(new Label(0,0,”第二页的测试数据”)); book.write(); book.close(); }catch(Exception e) { System.out.println(e); } } } 昨天看到一个模板的jxl,就是上面这种形式的,但网址我实在是忘了 import java.io.FileInputStream;import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;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.HSSFColor;import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class CreatExl { //创建Excel public static String outFile = "D:/bb2.xls"; public static void main(String[] args){ try{ POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("D:/bb.xls")); HSSFWorkbook workbook = new HSSFWorkbook(fs); HSSFSheet sheet = workbook.getSheetAt(0); for(short i=3;i<13;i++){ HSSFRow row = sheet.createRow(i); //在索引0的位置开始创建行(最顶端的行) for(short j=0;j<5;j++){ HSSFCell cell = row.createCell(j); //在索引0的位置开始创建单元格(左上端) cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格的类型为字符串; cell.setCellValue(j); //在单元格输入一些内容; } } FileOutputStream out = new FileOutputStream(outFile); //创建文件输出流 workbook.write(out); out.flush(); out.close(); System.out.println("文件生成..."); }catch(Exception e){ System.out.println("已运行 xlCreate():"+e); } }}看下这个,假如D:/bb.xls里面原来有固定格式的表头占3行,数据20行。我现在要取D:/bb.xls的表头3行,然后再动态写入10行数据。生成一张3行表头,10行数据的新报到到D:/bb2.xls。但是上面的代码虽然更新了前10行的数据,但是原来报表模板的后10行数据还在那。这个怎么处理?难道是要先把D:/bb.xls中除了表头之外的的行列都清空,然后再往里面写数据?请高手指教!! 我搞错了,这个代码已经实现了,import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; 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.HSSFColor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class CreatExl { //创建Excel public static String outFile = "D:/bb2.xls"; public static void main(String[] args){ try{ POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("D:/bb.xls")); HSSFWorkbook workbook = new HSSFWorkbook(fs); HSSFSheet sheet = workbook.getSheetAt(0); for(short i=3;i <13;i++){ HSSFRow row = sheet.createRow(i); //在索引0的位置开始创建行(最顶端的行) for(short j=0;j <5;j++){ HSSFCell cell = row.createCell(j); //在索引0的位置开始创建单元格(左上端) cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格的类型为字符串; cell.setCellValue(j); //在单元格输入一些内容; } } FileOutputStream out = new FileOutputStream(outFile); //创建文件输出流 workbook.write(out); out.flush(); out.close(); System.out.println("文件生成..."); }catch(Exception e){ System.out.println("已运行 xlCreate():"+e); } } } 呵呵,谢谢大家的支持:) 求助分组取最大值算法 SDK 让我纠结的一个小问题,help me,please... acsii码转换 各位朋友高手,看看以下哪本java书最好。 GEF开发时,实现复制黏贴的问题 用JAVA语言存数据到Oracle中,select出来的都是乱码? 关于JTable!!!!!!!help!!!!! 几个java问题请专家看1下,对你是小菜,给高分!!!!!!! 如何去掉文件多余部分? 提一个比较有深度的问题:关于一个桌面运用软件项目的开发 控制台输入密码
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;public class Myjxml { /**
* @param args
*/
static SAXBuilder sab = new SAXBuilder(false);
public static void main(String[] args) throws JDOMException, IOException {
// TODO Auto-generated method stub
Document doc=sab.build("D:\\uaapConsole\\javalx\\src\\jxml\\testxml.xml");
Element root=doc.getRootElement();//获得根节点
//Document root1=doc.getDocument();
//System.out.println(root.getChild("usertest"));
//System.out.println(root.getValue());//输出子节点的值
//System.out.println(root.getChildren().isEmpty());//是否为空
List alist=(List) root.getChildren("usertest");
//NodeList students = root.get
String xls="D:\\uaapConsole\\javalx\\src\\jxml\\";
String xls1=null;
for(int i=0;i<alist.size();i++)
{ //System.out.println(i);
Element item=(Element)alist.get(i);////取得节点实例
//(Element)booklist.get(i)
String name=item.getChild("name").getText();
String name1=item.getChild("pass").getText();
boolean a=item.getChildren().isEmpty();
System.out.println(a);
xls1=xls+name;
}
System.out.println(xls1+"文件所在的路径!!");
File f=new File(xls1);
if(f.exists())
{ System.out.println("文件已经存在!!");}
else{
f.createNewFile();
}
String s=f.getPath();
System.out.println(s);
System.out.println(f.getParentFile());//所在位置
jxl.Workbook rwb = null;
try {
InputStream is = new FileInputStream(xls1);
System.out.println(is);
// Sheet rs = rwb.getSheet(0);
//rwb = Workbook.getWorkbook(is);
rwb = Workbook.getWorkbook(is);
Sheet sh=rwb.getSheet(0);
int a=sh.getColumns();
int b=sh.getRows();
System.out.println(a+"--"+b);
for (int i=0;i<a;i++)
{
for(int c=0;c<b;c++)
{
Cell cell=sh.getCell(i, c);
System.out.println(cell.getContents());
}
}
String xls2="D:\\uaapConsole\\javalx\\src\\jxml\\xls2.xls";
File ff=new File(xls2);
if(!ff.exists())
{ff.createNewFile();}
jxl.write.WritableWorkbook workbook=null;
try {
workbook = Workbook.createWorkbook(new File(xls2));
} catch (IOException e) {
e.printStackTrace();
}
jxl.write.WritableSheet ws=null;
if(!(workbook==null)){
ws= workbook.createSheet("sheet1", 0);
}
for(int i=0;i<=15;i++){
for(int c=0;c<=15;c++)
{
Label labelC = new Label(i, c, "这是第"+(i+1)+"行,第"+(c+1)+"列");
try {
System.out.print(c);
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
try {
//从内存中写入文件中
workbook.write();
//Workbook.write();
//关闭资源,释放内存
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
// WritableSheet ws = wwb.createSheet("sheet1", 0);
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
import jxl.*;
import jxl.write.*; public class UpdateXLS
{
public static void main(String args[])
{
try
{
//Excel获得文件
Workbook wb=Workbook.getWorkbook(new File(“模板.xls”)); //打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book=
Workbook.createWorkbook(new File(“输出.xls”),wb); //添加一个工作表
WritableSheet sheet=book.createSheet(“第二页”,1); sheet.addCell(new Label(0,0,”第二页的测试数据”)); book.write();
book.close();
}catch(Exception e)
{
System.out.println(e);
}
}
} 昨天看到一个模板的jxl,就是上面这种形式的,但网址我实在是忘了
import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
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.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class CreatExl {
//创建Excel
public static String outFile = "D:/bb2.xls";
public static void main(String[] args){
try{
POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("D:/bb.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(fs);
HSSFSheet sheet = workbook.getSheetAt(0);
for(short i=3;i<13;i++){
HSSFRow row = sheet.createRow(i); //在索引0的位置开始创建行(最顶端的行)
for(short j=0;j<5;j++){
HSSFCell cell = row.createCell(j); //在索引0的位置开始创建单元格(左上端)
cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格的类型为字符串;
cell.setCellValue(j); //在单元格输入一些内容;
}
}
FileOutputStream out = new FileOutputStream(outFile); //创建文件输出流
workbook.write(out);
out.flush();
out.close();
System.out.println("文件生成...");
}catch(Exception e){
System.out.println("已运行 xlCreate():"+e);
}
}}
看下这个,假如D:/bb.xls里面原来有固定格式的表头占3行,数据20行。我现在要取D:/bb.xls的表头3行,然后再动态写入10行数据。生成一张3行表头,10行数据的新报到到D:/bb2.xls。但是上面的代码虽然更新了前10行的数据,但是原来报表模板的后10行数据还在那。这个怎么处理?难道是要先把D:/bb.xls中除了表头之外的的行列都清空,然后再往里面写数据?请高手指教!!
import java.io.FileInputStream;
import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
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.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class CreatExl {
//创建Excel
public static String outFile = "D:/bb2.xls"; public static void main(String[] args){
try{
POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("D:/bb.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(fs);
HSSFSheet sheet = workbook.getSheetAt(0);
for(short i=3;i <13;i++){
HSSFRow row = sheet.createRow(i); //在索引0的位置开始创建行(最顶端的行)
for(short j=0;j <5;j++){
HSSFCell cell = row.createCell(j); //在索引0的位置开始创建单元格(左上端)
cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格的类型为字符串;
cell.setCellValue(j); //在单元格输入一些内容;
}
}
FileOutputStream out = new FileOutputStream(outFile); //创建文件输出流
workbook.write(out);
out.flush();
out.close();
System.out.println("文件生成..."); }catch(Exception e){
System.out.println("已运行 xlCreate():"+e);
}
} }
呵呵,谢谢大家的支持:)