丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁 > 科技

【weka怎么導(dǎo)出excel】?jī)?yōu)雅的實(shí)現(xiàn)Excel導(dǎo)入和導(dǎo)出

日常創(chuàng)建后臺(tái)系統(tǒng)時(shí),經(jīng)常會(huì)出現(xiàn)Excel導(dǎo)入導(dǎo)出問題。這次,在創(chuàng)建后臺(tái)系統(tǒng)的同時(shí),我想創(chuàng)建Excel導(dǎo)入和導(dǎo)出的公共工具。(莎士比亞,Northern Excel,Northern Exposure)。

通常是導(dǎo)出時(shí)導(dǎo)出的前端表,前端表在背景中也有映射類。

所以在使用這個(gè)工具的時(shí)候,首先整理一下我們要達(dá)到的效果。

導(dǎo)出方法接收列表集合、類類型和HttpServletResponse對(duì)象

導(dǎo)出可能有下拉列表,因此需要map存儲(chǔ)下拉數(shù)據(jù)源。傳遞參數(shù)后,只需一行代碼即可導(dǎo)出

導(dǎo)入方法需要傳入文件和類類型。導(dǎo)入后,將返回file集合。其中,對(duì)象是接收類型的對(duì)象,傳遞參數(shù)后,只要有一行代碼就可以導(dǎo)入

實(shí)施過程:

首先,必須創(chuàng)建三個(gè)注釋

一個(gè)是EnableExport。導(dǎo)出需要此注釋

/* *

*允許導(dǎo)出設(shè)置

*/

@Targe)

@Retention)

Public @interface EnableExport {

字串檔名;

}然后,可以使用EnableExportField將包含此注釋的字段導(dǎo)出到Excel并設(shè)置列寬

/* *

*啟用此字段可允許導(dǎo)出

*用于設(shè)置寬度

*/

@Targe)

@Retention)

public @ interfaceenableexportfield {

Int colWidth default 100

字符串colName

} ImportIndex在導(dǎo)入時(shí)設(shè)置與Excel中的列相對(duì)應(yīng)的序列號(hào)

/* *

*導(dǎo)入時(shí)建立索引

*/

@Targe)

@Retention)

Public @interface ImportIndex {

Intindex

}使用注釋的示例

創(chuàng)建三個(gè)注釋后,必須開始Excel操作

先把方法拿來。前端在后臺(tái)接收上傳的Excel文件,然后使用poi讀取Excel文件

根據(jù)接收類型上面的字段注釋順序,為不同的字段分配值,將其保存到集合中,然后返回。

代碼如下:

/* *

將* Excel轉(zhuǎn)換為對(duì)象集合

* @param excel Excel文件

* @param clazz POJO類型

* @return

*/

public static listobject parseexceltolist(file excel、classclazz) {

ListObject RES=new ArrayList

//創(chuàng)建輸入流,讀取Excel

InputStream is=;

圖紙=;

Try {

is=new FileInputStream);

If (is)!=) {

workbook workbook=workbook fac(is);

//默認(rèn)情況下,僅導(dǎo)入第一個(gè)工作表

sheet=workbook . get sheet at(0);

If(床單!=) {

//前兩行是標(biāo)題

int I=2;

字串值;

row row=(I);

while(low!=) {

//獲取單元格數(shù)

intcell num=row . getphysicalnumberofcells;

values=new String[cell num];

for(int j=0;J=儲(chǔ)存格numJ) {

cell cell=row . getcell(j);

If(單元格!=) {

//設(shè)定儲(chǔ)存格內(nèi)容類型

cell . setcelltype);

//獲取單元格值

string value=cell . getstringcellvalue==? cell.getStringCellValue

values[j]=value;

}

}

field fields=clazz . getdeclaredfields;

Object obj=clazz.newInstance

/>for(Field f : fields){
i)){
ImportIndex annotation = f.getDeclaredAnnotation);
int index = anno;
f.setAccessible(true);
//此處使用了阿里巴巴的fastjson包里面的一個(gè)類型轉(zhuǎn)換工具類
Object val =Ty(values[index],f.getType,);
f.set(obj,val);
}
}
res.add(obj);
i++;
row=(i);
}

}
}
} catch (Exception e) {
e.printStackTrace;
}
return res;
}

接下來就是導(dǎo)出方法。

導(dǎo)出分為幾個(gè)步驟:

  1. 建立一個(gè)工作簿,也就是類型新建一個(gè)Excel文件

  1. 建立一張sheet表

  1. 設(shè)置標(biāo)的行高和列寬

  1. 繪制標(biāo)題和表頭

這兩個(gè)方法是自定義方法,代碼會(huì)貼在后面

  1. 寫入數(shù)據(jù)到Excel

  1. 創(chuàng)建下拉列表

  1. 寫入文件到response

到這里導(dǎo)出工作就完成了

下面是一些自定義方法的代碼

/**
* 獲取一個(gè)基本的帶邊框的單元格
* @param workbook
* @return
*/
private static HSSFCellStyle getBasicCellStyle(HSSFWorkbook workbook){
HSSFCellStyle hssfcellstyle = workbook.createCellStyle;
);
);
);
);
);
);
(true);
return hssfcellstyle;
}

/**
* 獲取帶有背景色的標(biāo)題單元格
* @param workbook
* @return
*/
private static HSSFCellStyle getTitleCellStyle(HSSFWorkbook workbook){
HSSFCellStyle hssfcellstyle = getBasicCellStyle(workbook);
((short) HSSFColor.CORNFLOWER_BLUE.index); // 設(shè)置背景色
);
return hssfcellstyle;
}

/**
* 創(chuàng)建一個(gè)跨列的標(biāo)題行
* @param workbook
* @param hssfRow
* @param hssfcell
* @param hssfsheet
* @param allColNum
* @param title
*/
privatestaticvoidcreateTitle(HSSFWorkbook workbook, HSSFRow hssfRow , HSSFCell hssfcell, HSSFSheet hssfsheet,int allColNum,String title){
//在sheet里增加合并單元格
CellRangeAddress cra = new CellRangeAddress(0, 0, 0, allColNum);
(cra);
// 使用RegionUtil類為合并后的單元格添加邊框
RegionU(1, cra, hssfsheet, workbook); // 下邊框
RegionU(1, cra, hssfsheet, workbook); // 左邊框
RegionU(1, cra, hssfsheet, workbook); // 有邊框
RegionU(1, cra, hssfsheet, workbook); // 上邊框

//設(shè)置表頭
hssfRow = hssf(0);
hssfcell = (0);
( getTitleCellStyle(workbook));
);
(title);
}

/**
* 設(shè)置表頭標(biāo)題欄以及表格高度
* @param workbook
* @param hssfRow
* @param hssfcell
* @param hssfsheet
* @param colNames
*/
privatestaticvoidcreateHeadRow(HSSFWorkbook workbook,HSSFRow hssfRow , HSSFCell hssfcell,HSSFSheet hssfsheet,List<String> colNames){
//插入標(biāo)題行
hssfRow = (1);
for (int i = 0; i < colNames.size; i++) {
hssfcell = (i);
(getTitleCellStyle(workbook));
);
(i));
}
}
/**
* excel添加下拉數(shù)據(jù)校驗(yàn)
* @param sheet 哪個(gè) sheet 頁添加校驗(yàn)
* @return
*/
publicstaticvoidcreateDataValidation(Sheet sheet,Map<Integer,String[]> selectListMap) {
if(selectListMap!=) {
(
// 第幾列校驗(yàn)(0開始)key 數(shù)據(jù)源數(shù)組value
(key, value) -> {
i;0) {
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(2, 65535, key, key);
DataValidationHelper helper = ;
DataValidationConstraint constraint = (value);
DataValidation dataValidation = (constraint, cellRangeAddressList);
//處理Excel兼容性問題
if (dataValidation instanceof XSSFDataValidation) {
da(true);
da(true);
} else {
da(false);
}
da(true);
da(true);
da("提示", "只能選擇下拉框里面的數(shù)據(jù)");
(dataValidation);
}
}
);
}
}

使用實(shí)例

導(dǎo)出數(shù)據(jù)

導(dǎo)入數(shù)據(jù)(返回對(duì)象List)

源碼地址:

來源:blog.c

1.《【weka怎么導(dǎo)出excel】?jī)?yōu)雅的實(shí)現(xiàn)Excel導(dǎo)入和導(dǎo)出》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。

2.《【weka怎么導(dǎo)出excel】?jī)?yōu)雅的實(shí)現(xiàn)Excel導(dǎo)入和導(dǎo)出》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/keji/2530340.html

上一篇

【excel怎么添加cxe】使用Excel實(shí)用程序

【weka怎么導(dǎo)出excel】導(dǎo)出Excel的四種方法

【weka怎么導(dǎo)出excel】導(dǎo)出Excel的四種方法

weka怎么導(dǎo)出excel相關(guān)介紹,1.服務(wù)器端輸出方法 1.1 html輸出方法是最常用的方法 優(yōu)點(diǎn):不需要插件 缺點(diǎn):不是實(shí)際的excel文件,不能創(chuàng)建太復(fù)雜的格式,有時(shí)無法打開 代碼示例: re(); Re=真; Re=&#39;...

【weka怎么導(dǎo)出excel】介紹幾種易于使用的數(shù)據(jù)可視化工具。

  • 【weka怎么導(dǎo)出excel】介紹幾種易于使用的數(shù)據(jù)可視化工具。
  • 【weka怎么導(dǎo)出excel】介紹幾種易于使用的數(shù)據(jù)可視化工具。
  • 【weka怎么導(dǎo)出excel】介紹幾種易于使用的數(shù)據(jù)可視化工具。

【weka怎么導(dǎo)出excel】“干制品”如何優(yōu)雅地導(dǎo)出Excel?

  • 【weka怎么導(dǎo)出excel】“干制品”如何優(yōu)雅地導(dǎo)出Excel?
  • 【weka怎么導(dǎo)出excel】“干制品”如何優(yōu)雅地導(dǎo)出Excel?
  • 【weka怎么導(dǎo)出excel】“干制品”如何優(yōu)雅地導(dǎo)出Excel?

【weka怎么導(dǎo)出excel】7行代碼實(shí)現(xiàn)導(dǎo)出Excel文件

  • 【weka怎么導(dǎo)出excel】7行代碼實(shí)現(xiàn)導(dǎo)出Excel文件
  • 【weka怎么導(dǎo)出excel】7行代碼實(shí)現(xiàn)導(dǎo)出Excel文件
  • 【weka怎么導(dǎo)出excel】7行代碼實(shí)現(xiàn)導(dǎo)出Excel文件

【weka怎么導(dǎo)出excel】這是匯入和匯出復(fù)雜Excel表格的最簡(jiǎn)單方法

  • 【weka怎么導(dǎo)出excel】這是匯入和匯出復(fù)雜Excel表格的最簡(jiǎn)單方法
  • 【weka怎么導(dǎo)出excel】這是匯入和匯出復(fù)雜Excel表格的最簡(jiǎn)單方法
  • 【weka怎么導(dǎo)出excel】這是匯入和匯出復(fù)雜Excel表格的最簡(jiǎn)單方法

【weka怎么導(dǎo)出excel】打開EXCEL快速學(xué)習(xí)、保存、導(dǎo)出、更改文件類型等幾篇文章就足夠了

  • 【weka怎么導(dǎo)出excel】打開EXCEL快速學(xué)習(xí)、保存、導(dǎo)出、更改文件類型等幾篇文章就足夠了
  • 【weka怎么導(dǎo)出excel】打開EXCEL快速學(xué)習(xí)、保存、導(dǎo)出、更改文件類型等幾篇文章就足夠了
  • 【weka怎么導(dǎo)出excel】打開EXCEL快速學(xué)習(xí)、保存、導(dǎo)出、更改文件類型等幾篇文章就足夠了

【weka怎么導(dǎo)出excel】在Weka中加載CSV機(jī)器學(xué)習(xí)數(shù)據(jù)的方法

  • 【weka怎么導(dǎo)出excel】在Weka中加載CSV機(jī)器學(xué)習(xí)數(shù)據(jù)的方法
  • 【weka怎么導(dǎo)出excel】在Weka中加載CSV機(jī)器學(xué)習(xí)數(shù)據(jù)的方法
  • 【weka怎么導(dǎo)出excel】在Weka中加載CSV機(jī)器學(xué)習(xí)數(shù)據(jù)的方法