Jakarta POI - Àбâ
http://poi.apache.org/index.html
http://blog.naver.com/levin01.do?Redirect=Log&logNo=100011049989
I. POI ¶õ?
ÀϹÝÀûÀ¸·Î POI°¡ ¿¢¼¿ÆÄÀÏÀ» ¾²´Â ÄÄÆÛ³ÍÆ®·Î ¾Ë·ÁÁ® ÀÖÀ¸³ª POI´Â ÇÁ·ÎÁ§Æ® À̸§ÀÔ´Ï´Ù.
Áï POI´Â Microsoft Format FileÀ» ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â API¸¦ Á¦°øÇÕ´Ï´Ù. (ÇѸ¶µð·Î ÀÚ¹Ù¿¡¼ MSÆÄÀÏÀ» ÀÐ°í ¾µ¼öÀÖµµ·Ï Áö¿øÇÕ´Ï´Ù.)
POI¾È¿¡´Â ¿©·¯ ÄÄÆÛ³ÍÆ®µéÀÌ ÀÖ½À´Ï´Ù.
¨ç POIFS
MicrosoftÀÇ OLE2 Æ÷¸Ë Çü½ÄÀÇ ¹®¼¸¦ ÀÚ¹Ù·Î ÀÐ°í ¾µ¼ö ÀÖ´Â ÄÄÆÛ³ÍÆ®ÀÔ´Ï´Ù
±âº»ÀûÀ¸·Î POIÀÇ ¸ðµç ÄÄÆÛ³ÍÆ®µéÀÌ POIFS¸¦ »ç¿ëÇÕ´Ï´Ù.
¨è HSSF
MicrosoftÀÇ ¿¢¼¿ÆÄÀÏÀ» ÀÐ°í ¾µ¼ö ÀÖµµ·Ï Áö¿øÇÏ´Â ÄÄÆÛ³ÍÆ®ÀÔ´Ï´Ù.
¨é HWPF
MicrosoftÀÇ ¿öµåÆÄÀÏÀ» ÀÐ°í ¾µ¼ö ÀÖµµ·Ï Áö¿øÇÏ´Â ÄÄÆÛ³ÍÆ®ÀÔ´Ï´Ù.
ÀÌ ÄÄÆÛ³ÍÆ®´Â µðÀÚÀÎ Ãʱâ´Ü°èÀÔ´Ï´Ù.
¨ê HPSF
MicrosoftÀÇ OLE2 Æ÷¸Ë Çü½ÄÀÇ ¹®¼ ¼Ó¼ºÀ» ¾îÇø®ÄÉÀ̼ǿ¡¼ »ç¿ë ÇÒ¼ö ÀÖµµ·Ï Áö¿øÇÏ´Â ÄÄÆÛ³ÍÆ®ÀÔ´Ï´Ù.
ÇöÀç Àб⠱â´É¸¸ Á¦°øÇÕ´Ï´Ù
¿öµåÆÄÀÏÀ» Çڵ鸵 ÇÏ´Â HWPF´Â Ãʱâ´Ü°è¶ó »ç¿ëÀ» ¸øÇÏÁö¸¸ ±â´ë´Â µÇ´Â±º¿ä ^^
ps. ¿µ¾î»çÀüÀ» ã¾Æº¸´Ï poi´Â ÇÏ¿ÍÀÌÀÇ Åä¶õ ¿ä¸®¸¦ ¶æÇÏ´õ±º¿ä.
¿ì¸®³ª¶ó¸»·Î ÇÏ´Ï ÀÚÄ«¸£Å¸ Åä¶õ ÇÁ·ÎÁ§Æ® Âë µÉ¶ó³ª? ¤¾¤¾
II. ´Ù¿î·Îµå ¹× ¼³Ä¡
´Ù¿î·Îµå ¹ÞÀ¸·¯ °©½Ã´Ù~!
http://jakarta.apache.org/site/downloads/downloads_poi.cgi
ÇöÀç 2.5.1¹öÁ¯ÀÔ´Ï´Ù.
´Ù¿î¹ÞÀº ÆÄÀÏÀ» ¾ÐÃàÀ» Ç®¸é *.jar ÆÄÀϵéÀÌ ÀÖÀ»°Ì´Ï´Ù ÀÌ ÆÄÀϵéÀ» ÀÚ½ÅÀÇ ¾îÇø®ÄÉÀÌ¼Ç /lib/¿¡ º¹»çÇսôÙ
POI API http://jakarta.apache.org/poi/apidocs/index.html
Quick Guide http://jakarta.apache.org/poi/hssf/quick-guide.html
III. Formula(¼ö½Ä) Áö¿ø¿¡ °üÇØ..
¿¢¼¿À» ÀÐ°í ¾µ¶§ ¼ö½ÄÀ» Áö¿øÇÕ´Ï´Ù.
org.apache.poi.hssf.usermodel.HSSFCellÀÇ setCellFormula("formulaString") ¸Þ½îµå´Â ½ºÇÁ·¹µå½ÃÆ®¿¡ ¼ö½ÄÀ» Ãß°¡Çϴµ¥ »ç¿ëµÇ¸ç getCellFormula() ¸Þ½îµå´Â ¼ö½ÄÀ» ´ëÇ¥ÇÏ´Â ¹®ÀÚ¿À» Çؼ®Çϴµ¥ »ç¿ëµË´Ï´Ù. ÇÏÁö¸¸ ¿¢¼¿¿¡¼ »ç¿ëÇÏ´Â ¼ö½ÄÀ» ¸ðµÎ »ç¿ë ÇÒ ¼ö´Â ¾ø½À´Ï´Ù.
¨ç Áö¿øµÇ´Â ºÎºÐ
-. ¼¿ ÂüÁ¶, ½ÃÆ®ÂüÁ¶, Áö¿ªÂüÁ¶
-. »ó´ëÀû ȤÀº Àý´ëÀû ÂüÁ¶
-. ¼ö¿¬»ê ¹× ³í¸®¿¬»ê
-. ½ÃÆ® ȤÀº ¸ÅÅ©·Î ÇÔ¼ö
-. ¼ö½Ä °á°ú°ª ¹Ýȯ
¨è ºÎºÐÀû Áö¿ø
¹®ÀÚ¿À» Æ÷ÇÔÇÏ´Â ¼ö½ÄÀ» Çؼ®ÇÒ ¼ö´Â ÀÖÁö¸¸ ¹®ÀÚ¿°ªÀ» ¹ÝȯÇÏ´Â ¼ö½ÄÀº ¾ÆÁ÷ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
¨é Áö¿øµÇÁö ¾Ê´Â ºÎºÐ
-. ¹è¿ ¼ö½Ä
-. 1Áø¹ý ¼ö½Ä
-. 3D ÂüÁ¶
-. ¿¡·¯ °ª (cells containing #REF's or #VALUE's)
IV. ±âº»°´Ã¼
°¡Àå ±âº»À̵Ǵ °´Ã¼°¡ ´ÙÀ½ 4°¡Áö ÀÔ´Ï´Ù. À̸§¿¡¼ ¹«¾ùÀ» ¶æÇÏ´ÂÁö ´ë° ÁüÀÛ ÇÒ ¼ö ÀÖ°ÚÁÕ?
¨ç HSSFWorkbook - ¿¢¼¿ ¿öÅ©ºÏÀ» ¸»ÇÕ´Ï´Ù.
¨è HSSFSheet - ¿¢¼¿ ½¬Æ®¸¦ ³ªÅ¸³À´Ï´Ù.
¨é HSSFRow - ¿¢¼¿¿¡¼ ƯÁ¤ ÇàÀÔ´Ï´Ù.
¨ê HSSFCell - ¿¢¼¿¿¡¼ ƯÁ¤ Çà¿¡´ëÇÑ Æ¯Á¤ ¼¿ÀÔ´Ï´Ù
À§ 4°¡Áö °´Ã¼´Â ¾ÕÀ¸·Î °è¼Ó ³ª¿Ã°Ì´Ï´Ù. ´«¿©°Ü ¹Ì¸® ºÁ µÓ½Ã´Ù. @.@
V. ¿¢¼¿ Àб⠿¹Á¦
¨ç POSFSÀ» ÀÌ¿ëÇÏ¿© ¿¢¼¿ ¿öÅ©ºÏÀ» »ý¼ºÇÕ´Ï´Ù.
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("excelfile.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(fs);
¨è »ý¼ºµÈ ¿öÅ©ºÏÀ» ÀÌ¿ëÇÏ¿© ½ÃÆ® ¼ö¸¸Å µ¹¸é¼ ¿¢¼¿ ½ÃÆ® Çϳª¾¿À» »ý¼ºÇÕ´Ï´Ù.
int sheetNum = workbook.getNumberOfSheets();
for (int k = 0; k < sheetNum; k++) {
System.out.println("Sheet Number : "+k);
System.out.println(Sheet Name : " + workbook.getSheetName(k));
HSSFSheet sheet = workbook.getSheetAt(k);
}
¨é »ý¼ºµÈ ½ÃÆ®¸¦ ÀÌ¿ëÇÏ¿© ±× ÇàÀÇ ¼ö¸¸Å µ¹¸é¼ ÇàÀ» Çϳª¾¿ »ý¼ºÇÕ´Ï´Ù.
int rows = sheet.getPhysicalNumberOfRows();
for (int r = 0; r < rows; r++) {
HSSFRow row = sheet.getRow(r);
System.out.println("Row : "+row.getRowNum());
}
¨ê ¿ª½Ã³ª »ý¼ºµÈ ÇàÀ» ÀÌ¿ëÇÏ¿© ±× ¼¿ÀÇ ¼ö¸¸Å µ¹¸é¼ ¼¿À» Çϳª¾¿ »ý¼ºÇÕ´Ï´Ù.
int cells = row.getPhysicalNumberOfCells();
for (short c = 0; c < cells; c++) { <--!! short ÇüÀÔ´Ï´Ù. 255°³°¡ max!
HSSFCell cell = row.getCell(c);
int celltype = cell.getCellType();
...
}
¼¿À» »ý¼ºÇÏ¿© ¼¿ ŸÀÔ¿¡ µû¶ó 󸮸¦ ÇØÁÖ¸é ³¡~
¨ë ÁÖÀÇ»çÇ×
¸¸¾à ¿¢¼¿¿¡¼ A¿¿¡ ¾Æ¹«·± °ªÀÌ ¾øÀ¸¸é ±× ÇàÀº ÀÐÁö ¸øÇÕ´Ï´Ù.
ÇàÀ» ÀÐÁö ¸øÇÏ´Ï ¼¿¶ÇÇÑ Ã³¸® ÇÒ ¼ö ¾ø½À´Ï´Ù
VI. ¿¢¼¿Àб⠻ùÇüҽº
»ùÇà µ¥ÀÌÅÍ
A¿Àº B¿¿¡ ´ëÇÑ ¼¿ ŸÀÔÀ» ³ªÅ¸³»¸ç C¿Àº D¿¿¡´ëÇÑ ¼¿ ŸÀÔÀ» ³ªÅ¸³À´Ï´Ù.
Áï B:1 ÀÇ 123456ÀÇ ¼¿ ŸÀÔÀº A:1 ÀÏ¹Ý À̶ó´Â °ÍÀÌ¸ç ¸¶Âù°¡Áö·Î
D:1ÀÇ 2005-02-09ÀÇ ¼¿Å¸ÀÔÀº C:1 »ç¿ëÀÚÁ¤ÀÇ·Î ¼¼ÆÃÇÏ¿´´Ù´Â °Ì´Ï´Ù
ÀÌ ¿¢¼¿ÀÇ µ¥ÀÌÅ͸¦ ´ÙÀ½ ¼Ò½º·Î ÀÐ¾î º¸°Ú½À´Ï´Ù.
<%@ page <html> <% String excelfile = "C:\\Tomcat 5.0\\webapps\\ROOT\\example.xls"; try { //¿öÅ©ºÏÀ» »ý¼º! HSSFWorkbook workbook = new HSSFWorkbook(fs); int sheetNum = workbook.getNumberOfSheets(); for (int k = 0; k < sheetNum; k++) { //½ÃÆ® À̸§°ú ½ÃÆ®¹øÈ£¸¦ ÃßÃâ <br><br> for (int r = 0; r < rows; r++) { // ½ÃÆ®¿¡ ´ëÇÑ ÇàÀ» Çϳª¾¿ ÃßÃâ for (short c = 0; c < cells; c++) { // Çà¿¡´ëÇÑ ¼¿À» Çϳª¾¿ ÃßÃâÇÏ¿© ¼¿ ŸÀÔ¿¡ µû¶ó ó¸® switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_FORMULA : %>
|
À§ ¼Ò½ºÀÇ °á°úÀÔ´Ï´Ù.
Sheet Number 0 |
°á°ú¸¦ º¸´Ï »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ¼¿ ŸÀÔ¿¡ °ü°è¾øÀÌ ¼ýÀÚ°ü·Ã ¼¿Àº POI¿¡¼ ¸ðµÎ ¼ýÀÚ Å¸ÀÔÀ¸·Î ÀνÄÇØ ¹ö·È½À´Ï´Ù.³¯Â¥ ¿ª½Ã ÁöÁ¤ÇÑ ¼¿ ŸÀÔ¿¡ °ü°è¾øÀÌ ¸ðµÎ ¼ýÀÚ Å¸ÀÔÀ¸·Î ÀνÄÇØ ¹ö¸®´Â±º¿ä!
±×·³ ¾î¶»°Ô ³¯Â¥¸¦ Á¦´ë·Î Ç¥ÇöÇÒ±î¿ä?
³¯Â¥ ŸÀÔÀ» Á¦´ë·Î ³ªÅ¸³»±â À§Çؼ´Â ³¯Â¥ Cell¿¡´Â getDateCellValue()¸¦ »ç¿ëÇϸé Á¤»óÀûÀ¸·Î ó¸® ÇÒ ¼ö ÀÖ½À´Ï´Ù.
SimpleDateformat sdf = new SimpleDateformat("yyyy-MM-dd hh:mm");
String date = sdf.format(cell.getDateCellValue());
µîÀ» ÀÌ¿ëÇÏ¸é ³ªÅ¸³»°íÀÚ ÇÏ´Â ¾ËÂ¥¸¦ Ç¥Çö Çϱ⠴õ ½±°ÚÁö¿ä ³ª¸ÓÁö ¼ö½ÄÀ» °¡Á® ¿Ã¶§µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ÀÌ·± »çÇ×À» µµÇ¥·Î ³ªÅ¸³»º¸¾Ò½À´Ï´Ù.
org.apache.poi.hssf.usermodel.HSSFCell ¿¡´Â ¸ðµÎ 6°¡ÁöÀÇ Cell TypeÀÌ Àִµ¥, cell.getCellType()À» ÇÏ¸é ±× ¼¿ÀÇ ¹Ýȯ°ªÀ» ¾Ë ¼ö ÀÖÀ¸¸ç ±×¿¡ »óÀÀÇÏ´Â static ÇʵåŸÀÔÀº ´ÙÀ½°ú °°½À´Ï´Ù.
¼¿Å¸ÀÔ | ÇʵåŸÀÔ | ÇÔ¼ö | ÇÔ¼ö¹Ýȯ°ª |
0 | CELL_TYPE_NUMERIC | getNumericCellValue() | double |
1 | CELL_TYPE_STRING | getStringCellValue() | String |
2 | CELL_TYPE_FORMULA | getCellFormula() | String double String |
3 | CELL_TYPE_BLANK | ||
4 | CELL_TYPE_BOOLEAN | getBooleanCellValue() | boolean |
5 | CELL_TYPE_ERROR | getErrorCellvalue() | byte |