import?java.io.*;
創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元呂梁做網(wǎng)站,已為上家服務(wù),為呂梁各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
import?java.util.ArrayList;
import?java.util.List;
/**
*?@author?poet.x
*?????????2014/11/16
*/
public?class?FindName?{
public?static?void?main(String[]?args)?throws?IOException?{
if(args.length?!=?2??args[0]?!=?null??args[1]?!=?null??!args[0].isEmpty()??!args[1].isEmpty()?){
throw?new?IllegalArgumentException("參數(shù)不對!");
}
String?fileName?=?args[0];??//?文件名,帶路徑
String?toFindStr?=?args[1];?//?需要查找的姓
File?file?=?new?File(fileName);
FileReader?fr?=?new?FileReader(file);
BufferedReader?br?=?new?BufferedReader(fr);
String?name?=?null;
//?用于存放結(jié)果
ListString?results?=?new?ArrayListString();
while((name?=?br.readLine())?!=?null?){
if(?name?==?null?||?name.isEmpty()?)
continue;
if(name.startsWith("王"))
results.add(name);
}
FileWriter?fw?=?new?FileWriter("王.txt");
for(String?s?:?results){
fw.write(s);
fw.write("\r\n");
}
fw.flush();
fw.close();
}
}
編譯時,使用 javac -encoding UTF-8 FindName.java ,這樣可以防止編譯時報GBK編碼錯誤
用bufferReader讀取,按行獲取,獲取到用split分割取第第三個,同時準(zhǔn)備一個Mapint, int,key存儲數(shù)據(jù),value存儲出現(xiàn)的次數(shù)。
存放是先map.get(此時的第三行數(shù)據(jù)),沒有獲取到表示之前還沒有出現(xiàn)這個數(shù),就作為key放進(jìn)去,并將value設(shè)置為1,如果get到了,就將這個key的value加1,如此循環(huán)直到讀完這個文件。
之后得到的map,你可以自行處理了。
一、創(chuàng)建文件
擬生成一個名為“test.xls”的Excel文件,其中第一個工作表被命名為“第一頁”,大致效果如下:
package?com.luqin.jxl;
import?java.io.File;
import?jxl.Workbook;
import?jxl.format.UnderlineStyle;
import?jxl.write.Font;
import?jxl.write.Label;
import?jxl.write.WritableFont;
import?jxl.write.WritableSheet;
import?jxl.write.WritableWorkbook;
/**
*?創(chuàng)建Excel簡單實例
*?
*?@author?luqin?*?@version
*?@time?2012-6-20?上午11:12:02
*?
*/
public?class?CreateExcel?{
public?static?void?main(String[]?args)?{
String?excelName?=?"table.xls";
try?{
File?excelFile?=?new?File(excelName);
//?如果文件存在就刪除它
if?(excelFile.exists())
excelFile.delete();
//?打開文件
WritableWorkbook?book?=?Workbook.createWorkbook(excelFile);
//?生成名為“第一頁”的工作表,參數(shù)0表示這是第一頁
WritableSheet?sheet?=?book.createSheet("?第一頁?",?0);
//?合并單元格
sheet.mergeCells(5,?5,?6,?6);
//?文字樣式
jxl.write.WritableFont?wfc?=?new?jxl.write.WritableFont(
WritableFont.ARIAL,?10,?WritableFont.NO_BOLD,?false,
UnderlineStyle.NO_UNDERLINE,?jxl.format.Colour.RED);
jxl.write.WritableCellFormat?wcfFC?=?new?jxl.write.WritableCellFormat(
wfc);
//?設(shè)置單元格樣式
wcfFC.setBackground(jxl.format.Colour.GRAY_25);//?單元格顏色
wcfFC.setAlignment(jxl.format.Alignment.CENTRE);//?單元格居中
//?在Label對象的構(gòu)造子中指名單元格位置是第一列第一行(0,0)
//?以及單元格內(nèi)容為
Label?label?=?new?Label(0,?0,?"Head1",?wcfFC);
//?將定義好的單元格添加到工作表中
sheet.addCell(label);
/**//*
*?生成一個保存數(shù)字的單元格?必須使用Number的完整包路徑,否則有語法歧義?單元格位置是第二列,第一行,值為789.123
*/
jxl.write.Number?number?=?new?jxl.write.Number(1,?0,?555.12541);
sheet.addCell(number);
//?寫入數(shù)據(jù)并關(guān)閉文件
book.write();
book.close();
System.out.println("Excel創(chuàng)建成功");
}?catch?(Exception?e)?{
System.out.println(e);
}
}
}
編譯執(zhí)行后,會產(chǎn)生一個Excel文件。
三、讀取文件
以剛才我們創(chuàng)建的Excel文件為例,做一個簡單的讀取操作,程序代碼如下:
package??test;
//?讀取Excel的類?
import??java.io.File;
import??jxl.Cell;
import??jxl.Sheet;
import??jxl.Workbook;
public???class??ReadExcel???{
public???static???void??main(String?args[])???{
try????{
Workbook?book??=??Workbook.getWorkbook(?new??File(?"?test.xls?"?));
//??獲得第一個工作表對象?
Sheet?sheet??=??book.getSheet(?0?);
//??得到第一列第一行的單元格?
Cell?cell1??=??sheet.getCell(?0?,??0?);
String?result??=??cell1.getContents();
System.out.println(result);
book.close();
}???catch??(Exception?e)???{
System.out.println(e);
}?
}?
}?
程序執(zhí)行結(jié)果:test
四、修改文件
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的時候,除了打開文件的方式不同之外,
其他操作和創(chuàng)建Excel是一樣的。下面的例子是在我們已經(jīng)生成的Excel文件中添加一個工作表:
package??test;
import??java.io.File;
import??jxl.Workbook;
import??jxl.write.Label;
import??jxl.write.WritableSheet;
import??jxl.write.WritableWorkbook;
public???class??UpdateExcel???{
public???static???void??main(String?args[])???{
try????{
//??Excel獲得文件?
Workbook?wb??=??Workbook.getWorkbook(?new??File(?"?test.xls?"?));
//??打開一個文件的副本,并且指定數(shù)據(jù)寫回到原文件?
WritableWorkbook?book??=??Workbook.createWorkbook(?new??File(?"?test.xls?"?),
wb);
//??添加一個工作表?
WritableSheet?sheet??=??book.createSheet(?"?第二頁?"?,??1?);
sheet.addCell(?new??Label(?0?,??0?,??"?第二頁的測試數(shù)據(jù)?"?));
book.write();
book.close();
}???catch??(Exception?e)???{
System.out.println(e);
}?
}?
}?
其他操作
一、?數(shù)據(jù)格式化
在Excel中不涉及復(fù)雜的數(shù)據(jù)類型,能夠比較好的處理字串、數(shù)字和日期已經(jīng)能夠滿足一般的應(yīng)用。
1、?字串格式化
字符串的格式化涉及到的是字體、粗細(xì)、字號等元素,這些功能主要由WritableFont和
WritableCellFormat類來負(fù)責(zé)。假設(shè)我們在生成一個含有字串的單元格時,使用如下語句,
為方便敘述,我們?yōu)槊恳恍忻罴恿司幪枺?/p>
WritableFont?font1?=?
new??WritableFont(WritableFont.TIMES,?16?,WritableFont.BOLD);?①
WritableCellFormat?format1?=?new??WritableCellFormat(font1);?②
Label?label?=?new??Label(?0?,?0?,”data??4??test”,format1)?③
其中①指定了字串格式:字體為TIMES,字號16,加粗顯示。WritableFont有非常豐富的
構(gòu)造子,供不同情況下使用,jExcelAPI的java-doc中有詳細(xì)列表,這里不再列出。
②處代碼使用了WritableCellFormat類,這個類非常重要,通過它可以指定單元格的各種
屬性,后面的單元格格式化中會有更多描述。
③處使用了Label類的構(gòu)造子,指定了字串被賦予那種格式。
在WritableCellFormat類中,還有一個很重要的方法是指定數(shù)據(jù)的對齊方式,比如針對我們
上面的實例,可以指定:
//?把水平對齊方式指定為居中?
format1.setAlignment(jxl.format.Alignment.CENTRE);
//?把垂直對齊方式指定為居中?
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
二、單元格操作
Excel中很重要的一部分是對單元格的操作,比如行高、列寬、單元格合并等,所幸jExcelAPI
提供了這些支持。這些操作相對比較簡單,下面只介紹一下相關(guān)的API。
1、?合并單元格
WritableSheet.mergeCells(?int??m,?int??n,?int??p,?int??q);?
//?作用是從(m,n)到(p,q)的單元格全部合并,比如:?
WritableSheet?sheet?=?book.createSheet(“第一頁”,?0?);
//?合并第一列第一行到第六列第一行的所有單元格?
sheet.mergeCells(?0?,?0?,?5?,?0?);
合并既可以是橫向的,也可以是縱向的。合并后的單元格不能再次進(jìn)行合并,否則會觸發(fā)異常。
2、?行高和列寬
WritableSheet.setRowView(inti,intheight);
//作用是指定第i+1行的高度,比如:
//將第一行的高度設(shè)為200
sheet.setRowView(0,200);
WritableSheet.setColumnView(inti,intwidth);
//作用是指定第i+1列的寬度,比如:
//將第一列的寬度設(shè)為30
sheet.setColumnView(0,30);
jExcelAPI還有其他的一些功能,比如插入圖片等,這里就不再一一介紹,讀者可以自己探索。
其中:如果讀一個excel,需要知道它有多少行和多少列,如下操作:
Workbookbook=Workbook.getWorkbook(newFile("?測試1.xls?"));
//獲得第一個工作表對象
Sheetsheet=book.getSheet(0);
//得到第一列第一行的單元格
intcolumnum=sheet.getColumns();//得到列數(shù)
intrownum=sheet.getRows();//得到行數(shù)
System.out.println(columnum);
System.out.println(rownum);
for(inti?=0;i??rownum;i++)//循環(huán)進(jìn)行讀寫?
{
for(intj?=0;j??columnum;j++){
Cellcell1=sheet.getCell(j,i);
Stringresult=cell1.getContents();
System.out.print(result);
System.out.print("\t");
}
System.out.println();
}
book.close();
網(wǎng)站欄目:java篩選功能的代碼 java篩選功能的代碼怎么用
文章位置:http://jinyejixie.com/article38/doseipp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器、微信小程序、企業(yè)網(wǎng)站制作、外貿(mào)建站、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)