導航:首頁 > 編程語言 > java導出excel合並單元格

java導出excel合並單元格

發布時間:2025-04-04 16:02:18

A. java怎麼操作excel合並單元格

利用java操作Excel,有個開源的東東-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下載。
一.讀取Excel文件內容
java 代碼

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 代碼

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 代碼

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 代碼

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 代碼

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();
}
}

合並單元格:
//首先創建一個sheet
WritableSheet sheetWrite=writeWorkbook.createSheet("sheet的名稱",0);
//把 單元格(column, row)到單元格(column1, row1)進行合並。
sheetWrite.mergeCells(column, row, column1, row1);

java 操作excel,jxl加邊框,jxl合並單元格,單元格的設置,單元
WritableCellFormat headerFormat = new WritableCellFormat(
HEADER_FONT_STYLE);
//水平居中對齊
headerFormat.setAlignment(Alignment.CENTRE);
//豎直方向居中對齊
headerFormat.setVerticalAlignment
(VerticalAlignment.CENTRE);

//建立標簽,參數依次為:列索引、行索引、內容、格式
Label seqLabel = new Label(0, 0, "序號", headerFormat);
//增加單元格
sheet.addCell(seqLabel);
//合並單元格,參數依次為:列索引、行索引、列索引+需要合並
的列的個數、行索引+需要合並的行的個數
sheet.mergeCells(0, 0, 0, 1);
//設置單元格寬度,以字元為單位
sheet.setColumnView(0, "序號".length() + 10);
Label basicInfoLabel = new Label(1, 0, "基本信息",
headerFormat);
sheet.addCell(basicInfoLabel);
sheet.mergeCells(1, 0, 3, 0);//合並垮了3行。
sheet.mergeCells(1, 1, 1, 3);//合並垮了3列。

label = new Label(0, 1, "蘋果」);
sheet.mergeCells(0,1, 0, 3- 1);//合並垮了3列。
WritableCellFormat cellFormat = new WritableCellFormat();
cellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
// 垂直居中
label.setCellFormat(cellFormat);
sheet.addCell(label);
註:再次使cellFormat時,需要重新NEW WritableCellFormat 。

B. java excel 怎麼合並大的單元格

POIexcel表格何合並單元格

Java代碼
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
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.Region;

public class ExcelTest {

/**
* @param args
*/
public static void main(String[] args) throws IOException {

try {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFCellStyle style = wb.createCellStyle(); // 式象

style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平
HSSFRow row = sheet.createRow((short) 0);
HSSFRow row2 = sheet.createRow((short) 1);

sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0));
HSSFCell ce = row.createCell((short) 0);
ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 文處理
ce.setCellValue("項目\\期"); // 表格第行第列顯示數據
ce.setCellStyle(style); // 式居
int num = 0;
for (int i = 0; i < 9; i++) { // 循環9每都要跨單元格顯示
// 計算單元格跨格
int celln = 0;
int celle = 0;
if (i == 0) {
celln = 0;
celle = 1;
} else {
celln = (i * 2);
celle = (i * 2 + 1);
}
// 單元格合並
// 四參數別:起始行起始列結束行結束列
sheet.addMergedRegion(new Region(0, (short) (celln + 1), 0,
(short) (celle + 1)));
HSSFCell cell = row.createCell((short) (celln + 1));
cell.setCellValue("merging" + i); // 跨單元格顯示數據
cell.setCellStyle(style); // 式
// 跨單元格顯示數據:兩行行別兩格格行兩格數量金額
HSSFCell cell1 = row2.createCell((short) celle);
HSSFCell cell2 = row2.createCell((short) (celle + 1));
cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
cell1.setCellValue("數量");
cell1.setCellStyle(style);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue("金額");
cell2.setCellStyle(style);
num++;
}

// 面加合計百比

// 合計 加要跨單元格
sheet.addMergedRegion(new Region(0, (short) (2 * num + 1), 0,
(short) (2 * num + 2)));
HSSFCell cell = row.createCell((short) (2 * num + 1));
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("合計");
cell.setCellStyle(style);
HSSFCell cell1 = row2.createCell((short) (2 * num + 1));
HSSFCell cell2 = row2.createCell((short) (2 * num + 2));
cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
cell1.setCellValue("數量");
cell1.setCellStyle(style);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setCellValue("金額");
cell2.setCellStyle(style);

// 百比 同
sheet.addMergedRegion(new Region(0, (short) (2 * num + 3), 0,
(short) (2 * num + 4)));
HSSFCell cellb = row.createCell((short) (2 * num + 3));
cellb.setEncoding(HSSFCell.ENCODING_UTF_16);
cellb.setCellValue("百比");
cellb.setCellStyle(style);
HSSFCell cellb1 = row2.createCell((short) (2 * num + 3));
HSSFCell cellb2 = row2.createCell((short) (2 * num + 4));
cellb1.setEncoding(HSSFCell.ENCODING_UTF_16);
cellb1.setCellValue("數量");
cellb1.setCellStyle(style);
cellb2.setEncoding(HSSFCell.ENCODING_UTF_16);
cellb2.setCellValue("金額");
cellb2.setCellStyle(style);

FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
System.out.print("OK");
} catch (Exception ex) {
ex.printStackTrace();
}

}

}

C. java 導出excel 怎麼設置單元格寬度自適應

POI是apache提供的一個讀寫Excel文檔的開源組件,在操作excel時常要合並單元格,合並單元格的方法是:
sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 2));
自適應列寬度:
sheet.autoSizeColumn(1);
sheet.autoSizeColumn(1, true);
這兩種方式都是自適應列寬度,但是注意這個方法在後邊的版本才提供,poi的版本不要太老。 注意:第一個方法在合並單元格的的單元格並不好使,必須用第二個方法。
sheet.setColumnWidth(m, 「列名」.getBytes().length*2*256);
這個方法是計算字元串的長度,以便設置列寬,該方法在解決中文的問題上比較好,前面兩種方法對中文不好好用。。。。

還有在自適應寬度的時候,有時候遇到單元格是公式單元格,自適應不起作用,那是因為單元格存的是公式,並不是真正的數據,解決方法:
HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet.getWorkbook());

CellValue cell71Val = evaluator.evaluate(cell71);
cell71.setCellValue(cell71Val.getNumberValue());
將格式化後的數據再次set進去,就是真正的值了。

D. java如何如何實現兩張excel表的合並java操作excel合並單元格

可新建一個excel表,將兩個excel表格的副本添加到新建的表格中,並保存新的excel表格,即最後的合並表格。如下操作:
import com.spire.xls.*;
public class MergeExcels {
public static void main(String[] args){
//將待合並Excel文檔的名稱保存至字元串數組
String[] inputFiles = new String[]{\"file1.xlsx\

E. Java導入、導出excel保姆級教程(附封裝好的工具類)

在Java開發中,處理數據導出至Excel的需求是常見任務。了解Excel的基本構成是關鍵:WorkBook、Sheet、Row和Cell。Excel由工作簿、工作表構成,工作表由行和列組成,每一項數據都存儲在單元格中。


要實現這個功能,首先需要在項目中引入Apache POI庫。在pom.xml中添加相關依賴後,我們開始一步步操作:



  1. 創建Excel的基本元素,包括WorkBook,然後添加Sheet並設置名稱。

  2. 接著創建Row和Cell,可以指定單元格的類型,如文本、數字等。

  3. 美化導出的Excel,通過創建樣式和字體,如設置字體樣式、顏色和大小,調整列寬和高,還可以添加傾斜和下劃線效果。

  4. 進階技巧包括合並單元格、添加數據校驗、公式應用、下拉選擇和設置數據類型,例如數字和日期格式。


一個完整的SpringBoot項目示例展示了這些操作:在pom.xml中配置依賴,Controller層實現導出和導入功能,使用自定義的工具類處理數據操作。導入時,需要注意工具類支持的類型,如僅限於Java的八種基本數據類型和String。


示例中,學生信息集合將通過這些工具類以Excel格式展示。通過這些步驟,你將能夠熟練地使用Java導出和導入Excel數據。

F. java 導入EXCEL表格 單元格合並的情況怎麼處理,數據放在哪裡

HSSFWorkbook
wb
=
new
HSSFWorkbook(fis);
HSSFSheet
sheet
=
wb.getSheetAt(0);
HSSFRow
row
=
sheet.getRow(1);
HSSFRow
rowm
=
sheet.getRow(83);//取第84行,讀出C84備注,合並單元數據,再寫入備注
rowm.setHeight((short)1000);
//合並單元數據
sheet.addMergedRegion(new
Region((short)83
,
(short)
2,
(short)83,
(short)16));

閱讀全文

與java導出excel合並單元格相關的資料

熱點內容
程序員電腦如何快速關機 瀏覽:549
安卓貨拉拉怎麼沒聲音 瀏覽:594
分母加減混合運演算法則 瀏覽:928
小伙電腦編程 瀏覽:796
安卓手機打字出錯怎麼辦 瀏覽:778
雲伺服器怎麼掛網頁游戲 瀏覽:801
蘋果手機有什麼練音準的app 瀏覽:638
編譯原理53 瀏覽:535
javacms開源系統源碼下載 瀏覽:609
軟體個人版和伺服器版有什麼區別 瀏覽:668
lol有什麼伺服器在山東 瀏覽:844
命令行關閉窗口 瀏覽:972
手模編程 瀏覽:264
引入賬套顯示需要解壓縮 瀏覽:425
本地電腦連接阿里雲伺服器SQL 瀏覽:48
小米什麼時候推送安卓12 瀏覽:486
如何確保伺服器不斷電不斷網 瀏覽:19
怎麼增加密碼的安全性 瀏覽:212
安卓模擬器如何重啟 瀏覽:902
程序員那麼可愛懷孕第幾集結婚 瀏覽:744