`
荷戟者
  • 浏览: 279441 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jxl导出excel,自己收集,方便复用

阅读更多

自己上网找了一些,但是都不全面,自己收集一下,免得以后还得来回google,都是大家的智慧,我只是一个收集者。

1、这个是我自己搞的

//使用的工具是JXL,由官方提供的excel解析和创建的API。
// ****************************************************************************
public class JXLTest {

	public static void createXls(String path) {
		// 创建工作簿
		try {
			WritableWorkbook wb = Workbook.createWorkbook(new File(path));
			// 创建工作表
			WritableSheet sheet = wb.createSheet("工资表", 0);
			// 约定好导出的规则,每一行导出一条数据。
			Label label1 = new Label(0, 0, "张三");
			sheet.addCell(label1);
			
			DateTime date = new DateTime(1, 0, new Date());
			sheet.addCell(date);
			
			Number number = new Number(2, 0, 2000);
			sheet.addCell(number);
			
			// 写出
			wb.write();
			
			wb.close();
			

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RowsExceededException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (WriteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	
	public static void main(String[] args) {
		createXls("D:/temp.xls");
	}
}

// ****************************************************************************
try {
	map = this.clientservice.findAllByUser(uid, 1,
			Integer.MAX_VALUE);
	os = response.getOutputStream();
	response.setHeader("Content-Disposition",
			"attachment;filename="
					+ new String("客户信息.xls".getBytes("GBK"),
							"ISO-8859-1"));
	response.setContentType("application/octet-stream");
	all = (List) map.get("allClient");
	JXLUtils.createXls(os, all);
} catch (Exception e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
} finally {
	try {
		os.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

 2、一下是收集的:背景色、字体格式、合并单元格、设置行高/宽

/*现在正在做的项目中涉及大量的Excel文件导出导入操作,都是使用Java Excel来操作。 

Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。下面我写了一个简单的例子,展示基本的读取,新建,更新(包括常见格式的设置:字体,颜色,背景,合并单元格),拷贝操作,有这些其实已经基本足够应付大部分问题了。下面是例的源代码: 
*/
import java.io.*; 
import java.util.Date; 
import jxl.*; 
import jxl.format.Colour; 
import jxl.format.UnderlineStyle; 
import jxl.read.biff.BiffException; 
import jxl.write.*; 
import jxl.format.UnderlineStyle; 
import jxl.format.CellFormat;; 

public class OperateExcel { 

/** 
  * Read data from a excel file 
  */ 
public static void  readExcel(String excelFileName){ 
  Workbook  rwb = null;  
  try{ 
   InputStream stream = new FileInputStream(excelFileName); 
   rwb = Workbook.getWorkbook(stream); 
   Sheet  sheet = rwb.getSheet(0); 
   Cell   cell  = null; 
   int columns = sheet.getColumns(); 
   int rows    = sheet.getRows(); 
   for( int i=0 ; i< rows ; i++ ) 
    for( int j=0 ; j< columns ; j++){ 
     //attention: The first parameter is column,the second parameter is row.  
     cell = sheet.getCell(j,i);    
     String str00 = cell.getContents(); 
     if( cell.getType() == CellType.LABEL ) 
       str00 += " LAEBL"; 
     else if( cell.getType() == CellType.NUMBER) 
       str00 += " number"; 
     else if( cell.getType() == CellType.DATE) 
       str00 += " date"; 
     System.out.println("00==>"+str00); 
    } 
   stream.close(); 
  } 
  catch(IOException e){  
   e.printStackTrace(); 
  } 
  catch(BiffException e){ 
   e.printStackTrace(); 
  } 
  finally{  
   rwb.close(); 
  } 
} 
/** 
  * create a new excelFile 
  * @param excelFileName create name 
  */ 
public static void createExcelFile(String excelFileName){ 
  try{ 
   WritableWorkbook wwb = Workbook.createWorkbook(new File(excelFileName)); 
   WritableSheet     ws  = wwb.createSheet("sheet1",0); 
   //also,The first parameter is  column,the second parameter is row. 
   // add normal label data 
   Label label00 = new Label(0,0,"Label00"); 
   ws.addCell(label00); 
   //add font formating data   
   WritableFont  wf = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD , true); 
   WritableCellFormat wff = new WritableCellFormat(wf); 
   Label label10 = new Label(1,0,"Label10",wff); 
   ws.addCell(label10); 
   //add color font formating data 
   WritableFont wf_color = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.DOUBLE_ACCOUNTING,Colour.RED); 
   WritableCellFormat wff_color = new WritableCellFormat(wf_color); 
   wff_color.setBackground(Colour.GRAY_25); //set background coloe to gray  
   Label label20 = new Label(2,0,"Label20",wff_color);   
   ws.addCell(label20); 
   
   //合并单元格 
   WritableFont wf_merge = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,UnderlineStyle.DOUBLE_ACCOUNTING,Colour.GREEN); 
   WritableCellFormat wff_merge = new WritableCellFormat(wf_merge); 
   wff_merge.setBackground(Colour.BLACK); 
   Label label30 = new Label(3,0,"Label30",wff_merge);   
   ws.addCell(label30); 
   Label label40 = new Label(4,0,"Label40"); 
   ws.addCell(label40); 
   Label label50 = new Label(5,0,"Label50"); 
   ws.addCell(label50); 
     //合并 (0,3) (4,0) 
     //attention : 如果合并后面的列不为空,那么就把后面格的内容清空,格式也是按前一个单元格的格式 
   ws.mergeCells(3,0,4,0); 
   
   //添加Number格式数据 
   jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926); 
   ws.addCell(labelN); 
   
   //添加带有formatting的Number对象 
   jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##"); 
   jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf); 
   jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN); 
   ws.addCell(labelNF); 
   
   //添加Boolean对象 
   jxl.write.Boolean labelBoolean = new jxl.write.Boolean(2,1,false); 
   ws.addCell(labelBoolean); 
   
   //添加DateTime对象 
   DateTime labelDT = new DateTime(3,1,new Date()); 
   ws.addCell(labelDT); 
   
   //添加带有格式的DataTime数据 
   DateFormat dtf = new DateFormat("yyyy-MM-dd hh:mm:ss"); 
   WritableCellFormat wcfDt = new WritableCellFormat(dtf);   
   wcfDt.setBackground(Colour.YELLOW); 
   DateTime labelDT_format =  new DateTime(4,1,new java.util.Date(),wcfDt); 
   ws.addCell(labelDT_format); 
   ws.mergeCells(4,1,5,1); //比较长,用两列来显示     
   
   wwb.write(); 
   wwb.close(); 
  } 
  catch(IOException e){ 
   e.printStackTrace(); 
  } 
  catch(WriteException e){ 
   e.printStackTrace(); 
  }  
} 
/** 
  * 如何更新Excel文件 
  * @param fileName 
  */ 
public static void updateExcel(String fileName){  
  try{ 
   jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(fileName)); 
   WritableWorkbook wwb = Workbook.createWorkbook(new File(fileName),rw); 
   //这里其实执行的是一次copy操作,把文件先读到内存中,修改后再保存覆盖原来的文件来实现update操作 
   WritableSheet ws  = wwb.getSheet(0); 
   WritableCell wc = ws.getWritableCell(0,0); 
   if( wc.getType() == CellType.LABEL){ 
    Label l = (Label)wc; 
    l.setString(wc.getContents()+"_new"); 
   } 
   wwb.write(); 
   wwb.close(); 
  } 
  catch(IOException e){ 
   e.printStackTrace(); 
  } 
  catch(WriteException e){ 
   e.printStackTrace(); 
  } 
  catch(BiffException e){ 
   e.printStackTrace(); 
  } 
} 
/** 
  * 如何copy Excel文件 
  * @param fileName 
  */ 
public static void copyExcel(String sourFileName,String destFileName){  
  try{ 
   jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourFileName)); 
   WritableWorkbook wwb = Workbook.createWorkbook(new File(destFileName),rw); 
   wwb.write(); 
   wwb.close(); 
  } 
  catch(IOException e){ 
   e.printStackTrace(); 
  } 
  catch(WriteException e){ 
   e.printStackTrace(); 
  } 
  catch(BiffException e){ 
   e.printStackTrace(); 
  } 
} 

public static void main(String [] argv){ 
  //OperateExcel.readExcel("E:\\test.xls"); 
  //OperateExcel.createExcelFile("E:\\test1.xls"); 
  //OperateExcel.updateExcel("E:\\test.xls"); 
  OperateExcel.copyExcel("E:\\test.xls","E:\\moon.xls"); 
} 

} 




// jxl读写excel常见操作搜集整理 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.OutputStream; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.HashMap; 

import jxl.Cell; 
import jxl.CellType; 
import jxl.DateCell; 
import jxl.Range; 
import jxl.Sheet; 
import jxl.Workbook; 
import jxl.WorkbookSettings; 
import jxl.format.Alignment; 
import jxl.format.Border; 
import jxl.format.BorderLineStyle; 
import jxl.format.CellFormat; 
import jxl.format.Colour; 
import jxl.format.UnderlineStyle; 
import jxl.format.VerticalAlignment; 
import jxl.write.Formula; 
import jxl.write.Label; 
import jxl.write.Number; 
import jxl.write.NumberFormat; 
import jxl.write.WritableCell; 
import jxl.write.WritableCellFeatures; 
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 WriteExcelTest { 
static HashMap map = new HashMap(); 

public static void main(String[] args) { 
   try { 
//    copyDateFormat(new File("c:\\a.xls"), 0, "c:\\copy of a.xls"); 
//    writeExcelUseFormat("c:\\format.xls","test"); 

//    buildNewFormTemplete(new File("c:/templete.xls"),new File( "c:/buildNewFormTemplete.xls")); 
//    modifyDirectly1(new File("c:/templete.xls")); 
//    modifyDirectly2(new File("c:/templete.xls")); 
    copyDateAndFormat(new File("c:/a.xls"), 0, "c:/a2.xls"); 
   } catch (Exception e) { 
    // TODO 自动生成 catch 块 
    e.printStackTrace(); 
   } 
} 



public static void modifyDirectly2(File inputFile) throws Exception{ 
   Workbook w1 = Workbook.getWorkbook(inputFile); 
   WritableWorkbook w2 = Workbook.createWorkbook(inputFile, w1); 
   WritableSheet sheet = w2.getSheet(0); 

   WritableCell cell = null; 
   CellFormat cf = null; 

   //加粗 
   cell = sheet.getWritableCell(0,0); 
   WritableFont bold = new WritableFont(WritableFont.ARIAL, 
     WritableFont.DEFAULT_POINT_SIZE, 
     WritableFont.BOLD); 
   cf = new WritableCellFormat(bold); 
   cell.setCellFormat(cf); 

   //设置下划线 
   cell = sheet.getWritableCell(0,1); 
   WritableFont underline = new WritableFont(WritableFont.ARIAL, 
     WritableFont.DEFAULT_POINT_SIZE, 
     WritableFont.NO_BOLD, 
     false, 
     UnderlineStyle.SINGLE); 
   cf = new WritableCellFormat(underline); 
   cell.setCellFormat(cf); 

   //直截添加可以覆盖掉 
   setCellValueDirectly(sheet,sheet.getCell(0, 2),new Double(4),CellType.NUMBER); 

   w2.write(); 
   w2.close(); 
} 




public static void modifyDirectly1(File file) { 
   try{ 
    // Excel获得文件 
    Workbook wb = Workbook.getWorkbook(file); 
    // 打开一个文件的副本,并且指定数据写回到原文件 
    WritableWorkbook book = Workbook.createWorkbook(file, 
      wb); 
    WritableSheet sheet0 = book.getSheet(0); 
    sheet0.addCell(new Label(0, 1, "陈小稳")); 

    // 添加一个工作表 
    WritableSheet sheet = book.createSheet( " 第二页 " , 1 ); 
    sheet.addCell( new Label( 0 , 0 , " 第二页的测试数据 " )); 
    book.write(); 
    book.close(); 
   } catch (Exception e) { 
    System.out.println(e); 
   } 
} 



public static void buildNewFormTemplete(File inputFile, File outputFile){ 
   try{ 
    // Excel获得文件 
    Workbook wb = Workbook.getWorkbook(inputFile); 
    // 打开一个文件的副本,并且指定数据写回到原文件 
    WritableWorkbook book = Workbook.createWorkbook(outputFile, 
      wb); 
    WritableSheet sheet0 = book.getSheet(0); 
    sheet0.addCell(new Label(0, 1, "陈小稳")); 

    // 添加一个工作表 
    WritableSheet sheet = book.createSheet( " 第二页 " , 1 ); 
    sheet.addCell( new Label( 0 , 0 , " 第二页的测试数据 " )); 

    book.write(); 
    book.close(); 
   } catch (Exception e) { 
    System.out.println(e); 
   } 
} 



public static void copyDateAndFormat(File inputFile, int inputFileSheetIndex, String outputFilePath) throws Exception { 
   Workbook book = null; 
   Cell cell = null; 
   //1.避免乱码的设置 
   WorkbookSettings setting = new WorkbookSettings(); 
   java.util.Locale locale = new java.util.Locale("zh","CN"); 
   setting.setLocale(locale); 
   setting.setEncoding("ISO-8859-1"); 
   book = Workbook.getWorkbook(inputFile, setting); 
   Sheet readonlySheet = book.getSheet(inputFileSheetIndex); 

   OutputStream os=new FileOutputStream(outputFilePath);//输出的Excel文件URL 
   WritableWorkbook wwb = Workbook.createWorkbook(os);//创建可写工作薄 
   WritableSheet writableSheet = wwb.createSheet(readonlySheet.getName(), 0);//创建可写工作表 

   //2.誊写不同数据格式的数据 
   for (int rowIndex = 0; rowIndex < readonlySheet.getRows(); rowIndex++) { 
    for (int colIndex = 0; colIndex < readonlySheet.getColumns(); colIndex++) { 
     cell = readonlySheet.getCell(colIndex, rowIndex); 
     //A2B2为合并的单元格,A2有内容,B2为空 
//     if(colIndex == 0 && rowIndex == 1){ 
//      System.out.println(colIndex + "," + rowIndex + " type:" + cell.getType() +" :" + cell.getContents()); 
//     }   
   
     //【有各种设置格式】 
     if(cell.getType() == CellType.DATE || cell.getType() == CellType.DATE_FORMULA){ 
      writableSheet.addCell( 
        new jxl.write.DateTime( 
          colIndex 
          , rowIndex 
          , ((DateCell)cell).getDate(), 
          new jxl.write.WritableCellFormat( 
            cell.getCellFormat() 
          ) 
        ) 
      ); 
     }else if(cell.getType() == CellType.NUMBER || cell.getType() == CellType.NUMBER_FORMULA){ 
      writableSheet.addCell( 
        new jxl.write.Number( 
          colIndex 
          , rowIndex 
          , ((jxl.NumberCell)cell).getValue(), 
          new jxl.write.WritableCellFormat( 
            cell.getCellFormat() 
          ) 
        ) 
      );    
     }else if(cell.getType() == CellType.EMPTY){ 
      //空的以及合并单元格中第一列外的 
//      System.out.println("EMPTY:"+cell.getContents()); 
//      System.err.println("空单元格 at " + colIndex + "," + rowIndex +" content:" + cell.getContents()); 
     }else if(cell.getType() == CellType.LABEL || cell.getType() == CellType.STRING_FORMULA){ 
      writableSheet.addCell( 
        new Label( 
          colIndex 
          , rowIndex 
          , cell.getContents() 
          , new jxl.write.WritableCellFormat( 
            cell.getCellFormat() 
          ) 
        ) 
      ); 
     }else{  
      System.err.println("其它单元格类型:" + cell.getType() + " at " + colIndex + "," + rowIndex +" content:" + cell.getContents()); 
     } 

//     if(cell.getType() == CellType.STRING_FORMULA){ 
//     System.err.println(colIndex + "," + rowIndex +":" + cell.getContents() +" type:" + cell.getType()); 
//     } 
    } 
   } 


   //3.处理合并单元格的事情(复制合并单元格格式) 
   Range[] range = readonlySheet.getMergedCells(); 
   for (int i = 0; i < range.length; i++) { 
//    System.out.println("第"+i+"处合并的单元格:" 
//    +",getTopLeft="+range[i].getTopLeft().getColumn() 
//    +","+range[i].getTopLeft().getRow() 
//    +",getBottomRight="+range[i].getBottomRight().getColumn() 
//    +","+range[i].getBottomRight().getRow() 
//    ); 
    //topleftXIndex, topleftYIndex, bottomRightXIndex, bottomRightYIndex 
    writableSheet.mergeCells( 
      range[i].getTopLeft().getColumn(), 
      range[i].getTopLeft().getRow(), 
      range[i].getBottomRight().getColumn(), 
      range[i].getBottomRight().getRow() 
    ); 
   } 

   //4.设置行列高宽 
   for (int colIndex = 0; colIndex < readonlySheet.getColumns(); colIndex++) { 
    writableSheet.setColumnView(colIndex,readonlySheet.getColumnView(colIndex)); 
   } 
   for (int rowIndex = 0; rowIndex < readonlySheet.getRows(); rowIndex++) { 
    writableSheet.setRowView(rowIndex,readonlySheet.getRowView(rowIndex)); 
   } 

   wwb.write(); 
   wwb.close(); 
   os.close(); 
} 



public static void writeExcelUseFormat(String outputFilePath,String outputFileSheetName) throws Exception{ 
   OutputStream os=new FileOutputStream(outputFilePath);//输出的Excel文件URL 
   WritableWorkbook wwb = Workbook.createWorkbook(os);//创建可写工作薄 
   WritableSheet sheet = wwb.createSheet(outputFileSheetName, 0);//创建可写工作表 


   sheet.addCell(new Label(0, 0, "号码")); 
   sheet.addCell(new Label(1, 0, "有效期")); 

   //1.写入时间的数据格式 
   jxl.write.DateFormat df = new jxl.write.DateFormat("yyyy-MM-dd"); 
   jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df); 
   jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 1, new Date(), wcfDF); //自定义格式 
   sheet.addCell(labelDTF); 

   //2.字体样式 
//   WritableFont()方法里参数说明: 
//   这个方法算是一个容器,可以放进去好多属性 
//   第一个: TIMES是字体大小,他写的是18 
//   第二个: BOLD是判断是否为斜体,选择true时为斜体 
//   第三个: ARIAL 
//   第四个: UnderlineStyle.NO_UNDERLINE 下划线 
//   第五个: jxl.format.Colour.RED 字体颜色是红色的 
   jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true); 
   jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf); 
   wcfF.setWrap(true);//自动换行 
   wcfF.setAlignment(jxl.format.Alignment.CENTRE);//把水平对齐方式指定为居中 
   wcfF.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//把垂直对齐方式指定为居中 
   jxl.write.Label labelC = new jxl.write.Label(0, 1, "This is a Label cell", wcfF); 
   sheet.addCell(labelC); 

   //3.添加带有formatting的Number对象 
   jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##"); 
   jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf); 
   jxl.write.Number labelNF = new jxl.write.Number(0, 2, 3.1415926, wcfN); 
   sheet.addCell(labelNF); 

   //4.添加Boolean对象 
   jxl.write.Boolean labelB = new jxl.write.Boolean(0, 3, false); 
   sheet.addCell(labelB); 

   //5.设置一个注解 
   WritableCellFeatures cellFeatures = new WritableCellFeatures(); 
   cellFeatures.setComment("添加Boolean对象"); 
   labelB.setCellFeatures(cellFeatures); 

   //6.单元格内换行 
   WritableCellFormat wrappedText = new WritableCellFormat 
   (WritableWorkbook.ARIAL_10_PT); 
   wrappedText.setWrap(true);//可换行的label样式 
   Label label = new Label(4, 0, "测试,\012测试。。。",wrappedText); // "\012"强制换行 
   sheet.addCell(label); 

   //7.数字的公式计算 
   Number n = new jxl.write.Number(0,9,4.5);//A10 
   sheet.addCell(n); 
   n = new Number(1,9,;//B10 
   sheet.addCell(n); 
   NumberFormat dp3 = new NumberFormat("#.###"); //设置单元格里面的数字格式 
   WritableCellFormat dp3cell = new WritableCellFormat(dp3); 
   dp3cell.setWrap(true); 
   Formula f = new Formula(2, 9, "(a10+b10)/2", dp3cell); //设置C10公式 
   sheet.addCell(f); 
   f = new Formula(3, 9, "SUM(A10:B10)", dp3cell);//设置D10公式 
   sheet.addCell(f); 

   //8.设置sheet的样式 
   sheet.getSettings().setProtected(true); //设置xls的保护,单元格为只读的 
   sheet.getSettings().setPassword("123"); //设置xls的密码 
   sheet.getSettings().setDefaultColumnWidth(10); //设置列的默认宽度,2cm左右 
   sheet.setRowView(3,200);//设置第4行高度 
   sheet.setRowView(2,false);// 这样可以自动把行高扩展 
   sheet.setColumnView(0 , 300);//设置第1列宽度,6cm左右 
   sheet.mergeCells(0 , 5, 1, 7);//合并单元格:合并A6B8也就是1列6行 与 2列7行 之间的矩形 

   //9.设置边框 
   drawRect(sheet, 5, 6, 7, 6,BorderLineStyle.THICK, Colour.BLACK, null); 

   wwb.write(); 
   wwb.close(); 
   os.close(); 
} 



public static void drawRect(WritableSheet sheet, int x, int y, int width, int height,BorderLineStyle style,Colour BorderColor, Colour bgColor) throws WriteException { 
   for(int w = 0; w < width; w++){ 
    for(int h = 0; h < height; h ++) { 
     WritableCellFormat alignStyle = new WritableCellFormat(); //单元格样式 
     alignStyle.setAlignment(Alignment.CENTRE);   //设置对齐方式 
     alignStyle.setVerticalAlignment(VerticalAlignment.CENTRE);//设置对齐方式 
     if(h == 0)//画上 
      alignStyle.setBorder(Border.TOP, style, BorderColor);//设置边框的颜色和样式 

     if(w == 0)//画左 
      alignStyle.setBorder(Border.LEFT, style, BorderColor);//设置边框的颜色和样式 

     if(w == width - 1)//画右 
      alignStyle.setBorder(Border.RIGHT, style, BorderColor);//设置边框的颜色和样式 

     if(h == height -1)//画下 
      alignStyle.setBorder(Border.BOTTOM, style, BorderColor);//设置边框的颜色和样式 
     //drawLine(sheet, x, y, Border.BOTTOM); 
     if(bgColor != null) 
      alignStyle.setBackground(bgColor); //背静色 
     Label mergelabel = new Label(x, y, "", alignStyle); 
     //topleftXIndex, topleftYIndex, bottomRightXIndex, bottomRightYIndex 
     //sheet.mergeCells(2, 5, 10, 10); 
     sheet.addCell(mergelabel); 
     y++; 
    } 
    y -= height; 
    x++; 
   } 
} 



public static ArrayList<String> sampleReadExcel(File inputFile, int inputFileSheetIndex) throws Exception { 
   ArrayList<String> list = new ArrayList<String>(); 
   Workbook book = null; 
   Cell cell = null; 
   //避免乱码的设置 
   WorkbookSettings setting = new WorkbookSettings(); 
   java.util.Locale locale = new java.util.Locale("zh","CN"); 
   setting.setLocale(locale); 
   setting.setEncoding("ISO-8859-1"); 
   book = Workbook.getWorkbook(inputFile, setting); 

   Sheet sheet = book.getSheet(inputFileSheetIndex); 
   for (int rowIndex = 0; rowIndex < sheet.getRows(); rowIndex++) {// Excel第一行为表头,因此J初值设为1 
    for (int colIndex = 0; colIndex < sheet.getColumns(); colIndex++) {// 只需从Excel中取出2列 
     cell = sheet.getCell(colIndex, rowIndex); 
     list.add(cell.getContents()); 
    } 
   } 

   //【问题:如果在实际部署的时候没有写下面这句是否会导致不断消耗掉服务器的内存?jxl里面有个ReadWrite.java没有关闭读的,只关闭了写的】 
   book.close(); 

   return list; 
} 



public static void setCellValueDirectly(WritableSheet sheet, Cell cell, Object newValue, CellType type) throws Exception{ 
   if(type == CellType.DATE || type == CellType.DATE_FORMULA){ 
    sheet.addCell( 
      new jxl.write.DateTime( 
        cell.getColumn() 
        , cell.getRow() 
        , (Date)newValue, 
        new jxl.write.WritableCellFormat( 
          cell.getCellFormat() 
        ) 
      ) 
    ); 
   }else if(type == CellType.NUMBER || type == CellType.NUMBER_FORMULA){ 
    sheet.addCell( 
      new jxl.write.Number( 
        cell.getColumn() 
        , cell.getRow() 
        , ((Double)newValue).doubleValue(), 
        new jxl.write.WritableCellFormat( 
          cell.getCellFormat() 
        ) 
      ) 
    );    
   }else if(type == CellType.LABEL || type == CellType.STRING_FORMULA){ 
    sheet.addCell( 
      new Label( 
        cell.getColumn() 
        , cell.getRow() 
        , (String)newValue 
        , new jxl.write.WritableCellFormat( 
          cell.getCellFormat() 
        ) 
      ) 
    ); 
   }else{  
    throw new Exception("不支持的其它单元格类型:"+type); 
//    System.err.println("不支持的其它单元格类型:" + cell.getType() + " at " + cell.getColumn() + "," + cell.getRow() +" current content:" + cell.getContents()); 
   } 
} 

 最后,我这些只是为了自己用的方便,收集大家的东东。

参考地址:

http://guohf.iteye.com/blog/605791

http://aiappfine.iteye.com/blog/289487

 

分享到:
评论

相关推荐

    使用jxl导出Excel表的好例子

    本篇文章将深入探讨如何利用`jxl`库来创建和导出Excel表格。 首先,我们需要在项目中引入`jxl`库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    jxl导出excel.zip

    "jxl导出excel.zip"是一个包含工具类的压缩包,用于帮助开发者便捷地将数据导出为Excel格式,主要利用了JXL库。JXL是Java Excel API的一个简称,它是一个开源的Java库,支持读取、写入以及修改Microsoft Excel文件。...

    Excel导入导出 jxl及Poi 工具类

    为了更好地理解这两个库的用法,你可以查看提供的"Excel导入导出(jxl及Poi)工具类"压缩包中的示例代码。通过阅读和运行这些代码,你可以更深入地了解如何在实际项目中应用jxl和Apache POI。 总的来说,jxl和Apache ...

    java实现自定义excel模板导出excel并可保存客户端和在线打开

    总结来说,利用Java和jxl库,我们可以轻松地创建自定义Excel模板,满足各种复杂的格式需求,并且能方便地在客户端保存或在线打开。通过深入理解和熟练运用jxl提供的API,开发者可以构建出强大而灵活的Excel生成工具...

    jxl资源包,用于Excel导入导出

    《jxl资源包:高效Excel导入导出的利器》 在IT行业中,处理数据往往是一项繁琐的任务,尤其是在数据量庞大的情况下。此时,高效的数据导入导出工具显得尤为重要。"jxl资源包"正是这样一个专为Java开发者设计的库,...

    uploadify+jxl导入导出代码备份 没有需要的jxl jar

    此资源是一个基于"uploadify"和"jxl"库的简单演示,用于实现文件上传与Excel数据的导入导出功能。这里我们将详细探讨这两个关键组件以及如何利用它们进行数据交互。 **uploadify** 是一个流行的JavaScript插件,它...

    Excel的导入导出

    - **导出Excel**:将Java对象或集合数据写入新的Excel文件。 - **自定义样式**:允许设置特定样式,如标题、表头等。 - **错误处理**:处理读写过程中可能出现的异常,如文件不存在、格式错误等。 4. **实际应用...

    jxl和数据库jar包

    使用jxl,你可以方便地将数据导出为Excel格式,或者从Excel文件中导入数据,这对于数据分析、报表生成和数据交换等场景非常有用。以下是一些使用jxl的关键知识点: 1. **安装与导入**:将下载的jxl.jar添加到项目的...

    java实现的导出Excel工具类实例

    Java实现的导出Excel工具类实例提供了一个可复用的解决方案,用于将数据导出到Excel表格中。该工具类提供了灵活的数据格式设置和表格合并设置,提高了数据导出效率。同时,该工具类也提供了灵活的应用场景,例如数据...

    Excel文件读写java代码

    JXL是一个开源的Java库,它提供了方便的API,使得开发者可以轻松地操作Excel文件。 3. **JXL库**:JXL库提供了广泛的API,支持读取、写入、修改Excel文件。它可以创建新的工作簿,添加工作表,读取单元格的数据,...

    2.68jxl+帮助文档

    JXL库提供了一种方便的方式来处理Excel电子表格,无需依赖于Microsoft Office或者其他的第三方软件。下面将详细介绍JXL库的主要功能、使用方法以及相关知识点。 一、JXL库概述 JXL库(Java Excel API)是开源的Java...

    java jxl.jar包可以直接使用

    总的来说,`jxl.jar`包为Java开发者提供了一种高效、便捷的方式来处理Excel数据,无论是进行数据分析、数据导入导出还是生成报表,都是一个实用的工具。但需要注意,对于非常大的Excel文件或者需要处理复杂格式和...

    android 写入读取Excel

    jxl是一个流行的老牌Java库,能够方便地处理Excel 97到2003格式(.xls)的文件。 首先,我们需要了解jxl库的基本使用。jxl提供了多种类和接口,用于操作Excel文件的单元格、行、列以及工作表。例如,`Workbook`类...

    Excel导入通用类 源码

    总的来说,这个Excel导入通用类结合了Java反射、JXL库和properties配置,提供了一种高效、灵活的解决方案,能够方便地处理各种类型的Excel数据。开发者可以通过理解和修改源码,来适应他们的特定业务场景,提高工作...

    java 操作excel代码和jar包

    在Java编程环境中,处理Excel文件是一项常见的任务,无论是数据分析、数据导入导出还是报表生成,都需要用到相关的库。在这个场景中,我们关注的是如何使用Java来操作Excel,并且涉及到了一个关键的库——jxl.jar,...

    Java Web开发中对Excel文件的读写实现 (1).pdf

    在Java Web开发中,处理Excel文件的读写是一项常见的任务,尤其在企业级应用中,数据导入导出的需求频繁出现。Java提供了多种库来支持这种功能,其中jxl是一个广泛使用的开源工具,允许开发者通过Java代码操作Excel...

    commons-logging-1.2.jar,commons-vfs2-2.2.jar,jxl.jar

    例如,一个企业级应用可能需要记录日志(使用Commons Logging),存储和检索大量数据(利用Commons VFS),并且需要将数据导出为Excel报告(借助JExcelApi)。这样,开发者可以借助这些库轻松实现复杂的功能,而无需...

    jxls需要的jar包.rar

    通过这些库,开发者可以方便地在Java应用程序中进行Excel数据的导入、导出和复杂操作,提高了工作效率并降低了与Excel交互的复杂性。这些库的使用不仅简化了代码,还使得项目更易于维护和扩展。

    java对xls读取实例.pdf

    1. **导出Excel(ExportXls类)** - **创建Workbook对象**:使用`Workbook.createWorkbook(File)`方法创建一个新的.xls文件工作簿。 - **创建WritableSheet对象**:通过`Workbook.createSheet(String, int)`创建一...

    基于SpringBoot + Vue 开发完成的前后端分离的学生宿舍管理系统源码+数据库,实现导出功能和分角色登录

    - 项目提供了数据导出功能,这通常涉及到文件格式转换,如CSV、Excel等,可以使用Apache POI或jxl库来实现。 - 导出数据可能涉及到大量数据的处理和优化,以提高导出性能和用户体验。 7. **版本控制**: - ...

Global site tag (gtag.js) - Google Analytics