Java操作Excel檔案
利用java操作Excel檔案
很久以來都想研究一下利用java操作Excel的方法,今天沒事,就稍微瞭解了一下,特總結一下。利用java操作Excel,有個開源的東東-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下載。
一.讀取Excel檔案內容
java 程式碼
/**讀取Excel檔案的內容
* @param file 待讀取的檔案
* @return
*/
public static String readExcel(File file){
StringBuffer sb = new StringBuffer();
Workbook wb = null;
try {
//構造Workbook(工作薄)物件
wb=Workbook.getWorkbook(file);
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(wb==null)
return null;
//獲得了Workbook物件之後,就可以通過它得到Sheet(工作表)物件了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
//對每個工作表進行迴圈
for(int i=0;i
//得到當前工作表的行數
int rowNum = sheet[i].getRows();
for(int j=0;j
//得到當前行的所有單元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0){
//對每個單元格進行迴圈
for(int k=0;k
//讀取當前單元格的值
String cellValue = cells[k].getContents();
sb.append(cellValue+"\t");
}
}
sb.append("\r\n");
}
sb.append("\r\n");
}
}
//最後關閉資源,釋放記憶體
wb.close();
return sb.toString();
}
二.寫入Excel檔案
這裡有很多格式了,比如文字內容加粗,加上某些顏色等,可以參考jxl的api,同時還推薦一篇不錯的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10
java 程式碼
/**生成一個Excel檔案
* @param fileName 要生成的Excel檔名
*/
public static void writeExcel(String fileName){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook類的工廠方法建立一個可寫入的工作薄(Workbook)物件
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//建立一個可寫入的工作表
//Workbook的createSheet方法有兩個引數,第一個是工作表的名稱,第二個是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
//下面開始新增單元格
for(int i=0;i<10;i++){
for(int j=0;j<5;j++){
//這裡需要注意的是,在Excel中,第一個參數列示列,第二個表示行
Label labelC = new Label(j, i, "這是第"+(i+1)+"行,第"+(j+1)+"列");
try {
//將生成的單元格新增到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
try {
//從記憶體中寫入檔案中
wwb.write();
//關閉資源,釋放記憶體
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
三.在一個Excel檔案中查詢是否包含某一個關鍵字
java 程式碼
/**搜尋某一個檔案中是否包含某個關鍵字
* @param file 待搜尋的檔案
* @param keyWord 要搜尋的關鍵字
* @return
*/
public static boolean searchKeyWord(File file,String keyWord){
boolean res = false;
Workbook wb = null;
try {
//構造Workbook(工作薄)物件
wb=Workbook.getWorkbook(file);
} catch (BiffException e) {
return res;
} catch (IOException e) {
return res;
}
if(wb==null)
return res;
//獲得了Workbook物件之後,就可以通過它得到Sheet(工作表)物件了
Sheet[] sheet = wb.getSheets();
boolean breakSheet = false;
if(sheet!=null&&sheet.length>0){
//對每個工作表進行迴圈
for(int i=0;i
if(breakSheet)
break;
//得到當前工作表的行數
int rowNum = sheet[i].getRows();
boolean breakRow = false;
for(int j=0;j
if(breakRow)
break;
//得到當前行的所有單元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0){
boolean breakCell = false;
//對每個單元格進行迴圈
for(int k=0;k
if(breakCell)
break;
//讀取當前單元格的值
String cellValue = cells[k].getContents();
if(cellValue==null)
continue;
if(cellValue.contains(keyWord)){
res = true;
breakCell = true;
breakRow = true;
breakSheet = true;
}
}
}
}
}
}
//最後關閉資源,釋放記憶體
wb.close();
return res;
}
四.往Excel中插入圖片圖示
插入圖片的實現很容易,參看以下程式碼:
java 程式碼
/**往Excel中插入圖片
* @param dataSheet 待插入的工作表
* @param col 圖片從該列開始
* @param row 圖片從該行開始
* @param width 圖片所佔的列數
* @param height 圖片所佔的行數
* @param imgFile 要插入的圖片檔案
*/
public static void insertImg(WritableSheet dataSheet, int col, int row, int width,
int height, File imgFile){
WritableImage img = new WritableImage(col, row, width, height, imgFile);
dataSheet.addImage(img);
}
以上程式碼的註釋已經很清楚了,大概也就不用再解釋了,我們可以用如下程式驗證:
java 程式碼
try {
//建立一個工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//待插入的工作表
WritableSheet imgSheet = workbook.createSheet("Images",0);
//要插入的圖片檔案
File imgFile = new File("D:/1.png");
//圖片插入到第二行第一個單元格,長寬各佔六個單元格
insertImg(imgSheet,0,1,6,6,imgFile);
workbook.write();
workbook.close();
catch (IOException e) {
e.printStackTrace();
catch (WriteException e) {
e.printStackTrace();
但是jxl只支援png格式的圖片,jpg格式和gif格式都不支援
五.插入頁首頁尾
一般的頁首頁尾都分為三個部分,左,中,右三部分,利用如下程式碼可實現插入頁首頁尾
java 程式碼
/**向Excel中加入頁首頁尾
* @param dataSheet 待加入頁首的工作表
* @param left
* @param center
* @param right
*/
public static void setHeader(WritableSheet dataSheet,String left,String center,String right){
HeaderFooter hf = new HeaderFooter();
hf.getLeft().append(left);
hf.getCentre().append(center);
hf.getRight().append(right);
//加入頁首
dataSheet.getSettings().setHeader(hf);
//加入頁尾
//dataSheet.getSettings().setFooter(hf);
}
我們可以用如下程式碼測試該方法:
java 程式碼
try {
//建立一個工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//待插入的工作表
WritableSheet dataSheet = workbook.createSheet("加入頁首",0);
ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1頁,共3頁");
workbook.write();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
很久以來都想研究一下利用java操作Excel的方法,今天沒事,就稍微瞭解了一下,特總結一下。利用java操作Excel,有個開源的東東-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下載。
一.讀取Excel檔案內容
java 程式碼
/**讀取Excel檔案的內容
* @param file 待讀取的檔案
* @return
*/
public static String readExcel(File file){
StringBuffer sb = new StringBuffer();
Workbook wb = null;
try {
//構造Workbook(工作薄)物件
wb=Workbook.getWorkbook(file);
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(wb==null)
return null;
//獲得了Workbook物件之後,就可以通過它得到Sheet(工作表)物件了
Sheet[] sheet = wb.getSheets();
if(sheet!=null&&sheet.length>0){
//對每個工作表進行迴圈
for(int i=0;i
//得到當前工作表的行數
int rowNum = sheet[i].getRows();
for(int j=0;j
//得到當前行的所有單元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0){
//對每個單元格進行迴圈
for(int k=0;k
//讀取當前單元格的值
String cellValue = cells[k].getContents();
sb.append(cellValue+"\t");
}
}
sb.append("\r\n");
}
sb.append("\r\n");
}
}
//最後關閉資源,釋放記憶體
wb.close();
return sb.toString();
}
二.寫入Excel檔案
這裡有很多格式了,比如文字內容加粗,加上某些顏色等,可以參考jxl的api,同時還推薦一篇不錯的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10
java 程式碼
/**生成一個Excel檔案
* @param fileName 要生成的Excel檔名
*/
public static void writeExcel(String fileName){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook類的工廠方法建立一個可寫入的工作薄(Workbook)物件
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//建立一個可寫入的工作表
//Workbook的createSheet方法有兩個引數,第一個是工作表的名稱,第二個是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
//下面開始新增單元格
for(int i=0;i<10;i++){
for(int j=0;j<5;j++){
//這裡需要注意的是,在Excel中,第一個參數列示列,第二個表示行
Label labelC = new Label(j, i, "這是第"+(i+1)+"行,第"+(j+1)+"列");
try {
//將生成的單元格新增到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
try {
//從記憶體中寫入檔案中
wwb.write();
//關閉資源,釋放記憶體
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
三.在一個Excel檔案中查詢是否包含某一個關鍵字
java 程式碼
/**搜尋某一個檔案中是否包含某個關鍵字
* @param file 待搜尋的檔案
* @param keyWord 要搜尋的關鍵字
* @return
*/
public static boolean searchKeyWord(File file,String keyWord){
boolean res = false;
Workbook wb = null;
try {
//構造Workbook(工作薄)物件
wb=Workbook.getWorkbook(file);
} catch (BiffException e) {
return res;
} catch (IOException e) {
return res;
}
if(wb==null)
return res;
//獲得了Workbook物件之後,就可以通過它得到Sheet(工作表)物件了
Sheet[] sheet = wb.getSheets();
boolean breakSheet = false;
if(sheet!=null&&sheet.length>0){
//對每個工作表進行迴圈
for(int i=0;i
if(breakSheet)
break;
//得到當前工作表的行數
int rowNum = sheet[i].getRows();
boolean breakRow = false;
for(int j=0;j
if(breakRow)
break;
//得到當前行的所有單元格
Cell[] cells = sheet[i].getRow(j);
if(cells!=null&&cells.length>0){
boolean breakCell = false;
//對每個單元格進行迴圈
for(int k=0;k
if(breakCell)
break;
//讀取當前單元格的值
String cellValue = cells[k].getContents();
if(cellValue==null)
continue;
if(cellValue.contains(keyWord)){
res = true;
breakCell = true;
breakRow = true;
breakSheet = true;
}
}
}
}
}
}
//最後關閉資源,釋放記憶體
wb.close();
return res;
}
四.往Excel中插入圖片圖示
插入圖片的實現很容易,參看以下程式碼:
java 程式碼
/**往Excel中插入圖片
* @param dataSheet 待插入的工作表
* @param col 圖片從該列開始
* @param row 圖片從該行開始
* @param width 圖片所佔的列數
* @param height 圖片所佔的行數
* @param imgFile 要插入的圖片檔案
*/
public static void insertImg(WritableSheet dataSheet, int col, int row, int width,
int height, File imgFile){
WritableImage img = new WritableImage(col, row, width, height, imgFile);
dataSheet.addImage(img);
}
以上程式碼的註釋已經很清楚了,大概也就不用再解釋了,我們可以用如下程式驗證:
java 程式碼
try {
//建立一個工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//待插入的工作表
WritableSheet imgSheet = workbook.createSheet("Images",0);
//要插入的圖片檔案
File imgFile = new File("D:/1.png");
//圖片插入到第二行第一個單元格,長寬各佔六個單元格
insertImg(imgSheet,0,1,6,6,imgFile);
workbook.write();
workbook.close();
catch (IOException e) {
e.printStackTrace();
catch (WriteException e) {
e.printStackTrace();
但是jxl只支援png格式的圖片,jpg格式和gif格式都不支援
五.插入頁首頁尾
一般的頁首頁尾都分為三個部分,左,中,右三部分,利用如下程式碼可實現插入頁首頁尾
java 程式碼
/**向Excel中加入頁首頁尾
* @param dataSheet 待加入頁首的工作表
* @param left
* @param center
* @param right
*/
public static void setHeader(WritableSheet dataSheet,String left,String center,String right){
HeaderFooter hf = new HeaderFooter();
hf.getLeft().append(left);
hf.getCentre().append(center);
hf.getRight().append(right);
//加入頁首
dataSheet.getSettings().setHeader(hf);
//加入頁尾
//dataSheet.getSettings().setFooter(hf);
}
我們可以用如下程式碼測試該方法:
java 程式碼
try {
//建立一個工作薄
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
//待插入的工作表
WritableSheet dataSheet = workbook.createSheet("加入頁首",0);
ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1頁,共3頁");
workbook.write();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
相關文章
- java 生成 excel檔案JavaExcel
- java匯出Excel檔案JavaExcel
- JAVA 操作檔案Java
- java 檔案操作Java
- 使用Tcl操作Excel檔案的方法Excel
- java操作excelJavaExcel
- Java POI匯入Excel檔案JavaExcel
- Java檔案操作 讀寫操作Java
- Java 檔案 IO 操作Java
- java操作ini檔案Java
- java檔案操作大全Java
- Java 根據模板生成 PDF 檔案 以及 excel 檔案JavaExcel
- java操作excel表格JavaExcel
- JXL包大解析;Java程式生成excel檔案和解析excel檔案內容JavaExcel
- JAVA檔案操作知識Java
- Java : File 檔案類操作Java
- 用SpringMVC來簡單的操作Excel檔案SpringMVCExcel
- 純前端生成Excel檔案騷操作——WebAssembly & web workers前端ExcelWeb
- 使用Java操作Excel表格JavaExcel
- java操作excel之jxlJavaExcel
- Java 通過Xml匯出Excel檔案,Java Excel 匯出工具類,Java匯出Excel工具類JavaXMLExcel
- Java 檔案 IO 操作之 DirectIOJava
- Java NIO Path介面操作檔案Java
- Java操作PDF檔案之ITextJava
- Java助力加固Excel檔案,保障資料安全JavaExcel
- Java操作Excel:POI和EasyExcelJavaExcel
- JAVA類檔案操作和異常Java
- Java審計之檔案操作漏洞Java
- Java中檔案的讀寫操作Java
- Java中對檔案的操作 (轉)Java
- java 檔案的操作(Path、Paths、Files)Java
- java 匯出 excel 最佳實踐,java 大檔案 excel 避免OOM(記憶體溢位) excel 工具框架JavaExcelOOM記憶體溢位框架
- 關於Java使用MinIO檔案伺服器操作檔案Java伺服器
- Java對檔案的操作及UDP,TCPJavaUDPTCP
- Java檔案操作工具類FileUtilsJava
- java NIO 常用的檔案操作方法Java
- Java 按行讀檔案操作程式碼Java
- 流式生成Excel檔案Excel