读: 读的时候是这样的一个思路,先用一个输入流(InputStream)得到Excel文件,然后用jxl中的Workbook得到工作薄,用Sheet从工作薄中得到工作表,用Cell得到工作表中得某个单元格.1 ~6 W7 r( t2 s k7 n5 E' _ e7 |
InputStream->Workbook->Sheet->Cell,就得到了excel文件中的单元格
" t! u6 P7 Z, W/ y7 L% _5 j 代码:4 w4 w9 H0 L& Y- B- y
String path="c:\\excel.xls";//Excel文件URL
9 ?& P! u0 h7 _( x InputStream is = new FileInputStream(path);//写入到FileInputStream
! Z* Q" [( |- v jxl.Workbook wb = Workbook.getWorkbook(is); //得到工作薄
* l# ]- ~4 _. j- w" s3 e4 P jxl.Sheet st = wb.getSheet(0);//得到工作薄中的第一个工作表4 `: J; i8 S( z
Cell cell=st.getCell(0,0);//得到工作表的第一个单元格,即A1
. J0 _/ E' p, o$ r+ ^ String content=cell.getContents();//getContents()将Cell中的字符转为字符串* p6 |7 e3 U+ I& ]- g+ |
wb.close();//关闭工作薄
5 w: \2 l5 O* }6 f is.close();//关闭输入流
3 f' o5 u% T+ H, @ ~2 c! v 我们可以通过Sheet的getCell(x,y)方法得到任意一个单元格,x,y和excel中的坐标对应.
7 A* @! D ^" O 例如A1对应(0,0),A2对应(0,1),D3对应(3,2).Excel中坐标从A,1开始,jxl中全部是从0开始.% n2 r! @, F b& e9 `' B
还可以通过Sheet的getRows(),getColumns()方法得到行数列数,并用于循环控制,输出一个sheet中的所有内容.0 C2 u' [: ]0 D" k& |
写:
1 b' C& F; s/ j3 ] 往Excel中写入内容主要是用jxl.write包中的类.1 i7 v7 t8 W" c9 k
思路是这样的:
" I h' _' z! U0 m0 I; r OutputStreamßWritableWorkbookßWritableSheetßLabel
% R/ N- G9 w2 W 这里面Label代表的是写入Sheet的Cell位置及内容., G4 x) w, Q: @4 q+ |
代码:
3 ^6 q2 {, K' c+ i; a OutputStream os=new FileOutputStream("c:\\test.xls");//输出的Excel文件URL
& O; |, e0 J+ a5 d, y/ U WritableWorkbook wwb = Workbook.createWorkbook(os);//创建可写工作薄" P+ A3 x* `; T5 I& g5 \9 t4 D
WritableSheet ws = wwb.createSheet("sheet1", 0);//创建可写工作表
$ ~( |1 @2 r' ?& C5 M4 Q Label labelCF=new Label(0, 0, "hello");//创建写入位置和内容
8 I1 q7 j% h3 `, G$ J) O, u ws.addCell(labelCF);//将Label写入sheet中( u6 N; e8 G i8 j% W& ?
Label的构造函数Label(int x, int y,String aString)xy意同读的时候的xy,aString是写入的内容.
# U8 L7 Z3 U2 I0 Q! @ WritableFont wf = new WritableFont(WritableFont.TIMES, 12, WritableFont.BOLD, false);//设置写入字体
P* P- ^7 u ^) d, z8 o WritableCellFormat wcfF = new WritableCellFormat(wf);//设置CellFormat3 Y! W3 ~, n' g8 W
Label labelCF=new Label(0, 0, "hello");//创建写入位置,内容和格式
- u. R& M3 B+ h Label的另一构造函数Label(int c, int r, String cont, CellFormat st)可以对写入内容进行格式化,设置字体及其它的属性.1 ]0 }4 N+ G3 R
现在可以写了9 @; h7 v/ y( x8 l. I, g/ M) U6 Q- a
wwb.write();0 W- Y! d6 J$ Q2 j
写完后关闭* G/ c; v# S6 }6 R7 Y: T% z
wwb.close();7 ^8 u2 r1 r% U# ]
输出流也关闭吧# t7 g. j8 i1 z0 ?: `& x7 ]
os.close;! X# c3 }2 p$ W& x
OK,只要把读和写结合起来,就可以在N个Excel中读取数据写入你希望的Excel新表中,还是比较方便的. |