更新時(shí)間:2022-05-25 10:58:37 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽4524次
對(duì)于使用代碼操作表格的方式,每種語(yǔ)言都有不同的方式,尤其是在Java這個(gè)庫(kù)很強(qiáng)大的情況下,基本上就變得容易很多,對(duì)于XSL文件,在實(shí)際工作中使用到很多,使用代碼實(shí)現(xiàn)表格的操作和導(dǎo)出,基本上每個(gè)程序員都要用到。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
導(dǎo)入坐標(biāo)之后,就是實(shí)現(xiàn)表格的創(chuàng)建和操作了,這里展示的是創(chuàng)建,修改和創(chuàng)建的道理也是一樣的。下面是源碼
public class POIXls {
/**
* 操作xls表格
* @param workName 表格的名字
* @param attributeName 第一行的屬性名
* @param savePath 要保存到的位置
* @param list List集合,用于寫入表格的集合(為什么不用map,這個(gè)根據(jù)實(shí)際需求來(lái)操作,因?yàn)樵趯?shí)際工作中有些表格的屬性名字是重復(fù)的,使用map會(huì)被覆蓋)
* @throws IOException
*/
public void createWork(String workName, List<String> attributeName,List<List<String>> list,String savePath) throws IOException {
Workbook wb = new HSSFWorkbook();
//創(chuàng)建工作表
Sheet sheet = wb.createSheet(workName);
// sheet.setDefaultColumnWidth(width);//列寬
// 創(chuàng)建第一行,索引從零開始
Row index = sheet.createRow(0);//行
Cell cells = null;//列
//創(chuàng)建第一行的屬性,即工作表的第一行屬性的名稱
for (int i = 0; i < attributeName.size(); i++) {
cells = index.createCell(i);
cells.setCellValue(attributeName.get(i));
}
for (int i = 0; i < list.size(); i++) {
index = sheet.createRow(i+1);//i+1是因?yàn)榈谝恍形覀円呀?jīng)創(chuàng)建好了,如果不加1會(huì)覆蓋前面的信息,為什么列不需要,因?yàn)榱惺菑拿啃械牡谝涣虚_始
for (int j = 0; j < list.get(i).size(); j++) {
Cell cell = index.createCell(j);
cell.setCellValue(list.get(i).get(j));
}
}
//創(chuàng)建工作表文件夾,將寫好的內(nèi)容寫到磁盤
File file = new File(savePath);
if (!file.exists()){
file.mkdir();
}
try(FileOutputStream fos = new FileOutputStream(savePath+workName+".xls")){
wb.write(fos);
fos.flush();
}finally {
if (wb!=null) wb.close();
}
}
public static void main(String[] args) throws IOException {
POIXls poiXls = new POIXls();
List<String> listAttributeName = new ArrayList<>();
listAttributeName.add("姓名");
listAttributeName.add("性別");
listAttributeName.add("電話");
listAttributeName.add("備注");
List<List<String>> list = new ArrayList<>();
for (int i=0;i<2;i++) {
List<String> arrayList = new ArrayList<>();
arrayList.add("張三豐"+i);
arrayList.add("男");
arrayList.add("10086");
arrayList.add("武當(dāng)祖師"+i);
list.add(arrayList);
}
poiXls.createWork("測(cè)試",listAttributeName,list,"C:\\log\\");
}
結(jié)果:


這就是對(duì)于表格的操作,其中列寬是可以指定的,具體可以看代碼。
注意:保存地址最好不要直接保存在系統(tǒng)盤下,有可能權(quán)限被拒絕,無(wú)法寫入,如代碼中的例子
C:\ ----->這個(gè)是寫入失敗的,權(quán)限被拒絕
C:\log\ ---->這樣寫入就不會(huì)出現(xiàn)問(wèn)題,當(dāng)然有可能是電腦的原因,具體看自己的使用習(xí)慣
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)