java中怎麼讀取excel文件

|package com.jqgj.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FilenameUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ImportNameTest {
/**
* Excel 2003
*/
private final static String XLS = "xls";
/**
* Excel 2007
*/
private final static String XLSX = "xlsx";
/**
* 分隔符
*/
private final static String SEPARATOR = "|";

/**
* 由Excel文件的Sheet導出至List
*
* @ file
* @param sheetNum
* @return
*/
public static List<String> exportListFromExcel(File file, int sheetNum)
throws IOException {
return exportListFromExcel(new FileInputStream(file),
FilenameUtils.getExtension(file.getName()), sheetNum);
}
/**
* 由Excel流的Sheet導出至List
*
* @param is
* @param extensionName
* @param sheetNum
* @return
* @throws IOException
*/
public static List<String> exportListFromExcel(InputStream is,
String extensionName, int sheetNum) throws IOException {

Workbook workbook = null;

if (extensionName.toLowerCase().equals(XLS)) {
workbook = new HSSFWorkbook(is);
} else if (extensionName.toLowerCase().equals(XLSX)) {
workbook = new XSSFWorkbook(is);
}

return exportListFromExcel(workbook, sheetNum);
}
/**
* 由指定的Sheet導出至List
*
* @param workbook
* @param sheetNum
* @return
* @throws IOException
*/
private static List<String> exportListFromExcel(Workbook workbook,
int sheetNum) {

Sheet sheet = workbook.getSheetAt(sheetNum);

// 解析公式結果
FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();

List<String> list = new ArrayList<String>();

int minRowIx = sheet.getFirstRowNum();
int maxRowIx = sheet.getLastRowNum();
for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {
Row row = sheet.getRow(rowIx);
StringBuilder sb = new StringBuilder();

short minColIx = row.getFirstCellNum();
short maxColIx = row.getLastCellNum();
for (short colIx = minColIx; colIx <= maxColIx; colIx++) {
Cell cell = row.getCell(new Integer(colIx));
CellValue cellValue = evaluator.evaluate(cell);
if (cellValue == null) {
continue;
}
// 經過公式解析,最後只存在Boolean、Numeric和String三種數據類型,此外就是Error了
// 其餘數據類型,根據官方文檔,完全可以忽略http://poi.apache.org/spreadsheet/eval.html
switch (cellValue.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
sb.append(SEPARATOR + cellValue.getBooleanValue());
break;
case Cell.CELL_TYPE_NUMERIC:
// 這里的日期類型會被轉換為數字類型,需要判別後區分處理
if (DateUtil.isCellDateFormatted(cell)) {
sb.append(SEPARATOR + cell.getDateCellValue());
} else {
//把手機號碼轉換為字元串
DecimalFormat df = new DecimalFormat("#");
sb.append(SEPARATOR + df.format(cellValue.getNumberValue()));
}
break;
case Cell.CELL_TYPE_STRING:
sb.append(SEPARATOR + cellValue.getStringValue());
break;
case Cell.CELL_TYPE_FORMULA:
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
break;
default:
break;
}
}
list.add(sb.toString());
}
return list;
}

/**
* @param args
*/
public static void main(String[] args) {
String path = "f:\\telName.xlsx";
try {
List<String> listS= exportListFromExcel(new File(path),0);
for(int i=0;i<listS.size();i++){
System.out.println(listS.get(i));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

⑵ 用java讀取Excel表格

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Formula;
import jxl.write.Label;
import jxl.write.WritableCellFeatures;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* <p>標題:readExcel</p>
* <p>描述:讀取Excel文件數據</p>
* @param excelfilePath Excel文件路徑
* @param startRow 開始行
* @param startCol 開始列
* @return List<ArrayList<String>>
* @throws IOException
* @throws BiffException
*/
public List<ArrayList<String>> readExcel(String excelfilePath,
int startRow, int startCol) throws IOException, BiffException {
// 讀取xls文件
InputStream ins = new FileInputStream(excelfilePath);
// 設置讀文件編碼
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("UTF-8");
Workbook rwb = Workbook.getWorkbook(ins, setEncode);
List<ArrayList<String>> alldata = new ArrayList<ArrayList<String>>();
ArrayList<String> data = null;
alldata.clear();
// 獲得當前Excel表共有幾個sheet
// Sheet[] sheets = rwb.getSheets();
// 獲得表數
// int pages = sheets.length;
// 將excel表中的數據讀取出來
// 在從Excel中讀取數據的時候不需要知道每個sheet有幾行,有那多少列
// for (int i = 0; i < pages; i++) {
Sheet sheet = rwb.getSheet(0);
int cols = sheet.getColumns(); // 列
// 讀取每一行對應的列數目
// 循環讀取每一行的全部列數目的內容
int rows = sheet.getRows(); // 行
for (int r = startRow; r < rows; r++) {
data = new ArrayList<String>();
// 行循環,Excel的行列是從(0,0)開始
for (int c = startCol; c < cols; c++) {
Cell excelRows = sheet.getCell(c, r);
String strRow = excelRows.getContents();
data.add(strRow);
}
alldata.add(data);
}
// }
ins.close();
return alldata;
}

自己寫的java讀取excel表格數據的方法,需要導入jxl包

⑶ 淺談JAVA讀寫Excel的幾種途徑

讀寫Excel文件需要使用Excel類庫,如Free Spire.XLS for Java.

讀取Excel內容:

//創建Workbook對象
Workbookwb=newWorkbook();
//載入一個Excel文檔
wb.loadFromFile("C:\Users\Administrator\Desktop\test.xlsx");
//獲取第一個工作表
Worksheetsheet=wb.getWorksheets().get(0);
//遍歷工作表的每一行
for(inti=1;i<sheet.getLastRow()+1;i++){
//遍歷工作的每一列
for(intj=1;j<sheet.getLastColumn()+1;j++){
//輸出指定單元格的數據
System.out.print(sheet.get(i,j).getText());
System.out.print(" ");
}
System.out.print(" ");
}

寫入內容:

//創建Workbook對象
Workbookwb=newWorkbook();
//載入一個Excel文檔
wb.loadFromFile("C:\Users\Administrator\Desktop\test.xlsx");
//獲取第一個工作表
Worksheetsheet=wb.getWorksheets().get(0);
//在單元格A1寫入新數據
sheet.getCellRange("A1").setText("你好");
//保存文檔
wb.saveToFile("寫入Excel.xlsx",ExcelVersion.Version2016);

⑷ java操作excel有多少個工具類

JAVA 通常有兩種方法來操作Excel,分別是POI和JExcelAPI,而且都是開源的。POI是Apace公司開發的,對中文的支持比較弱一些;而JExcelAPI是韓國公司開發的,不僅對中文的支持好,而且由於是純JAVA編寫的,所以可以跨平台操作。本文介紹的也是JExcelAPI的使用方法。

1、環境配置

如下網址,可以下載到API:http://www.andykhan.com/jexcelapi/download.html

下載完成的包解壓之後,可以得到如下幾個重要的文件:

(1)jxl.jar —— JExcelAPI 函數庫;

(2)docs —— 幫助文檔;

(3)src —— 源碼文件夾;

將jxl.jar復制到%JAVA_HOME%\jre\ext\文件夾下面,在CLASSPATH變數裡面添加"%JAVA_HOME%\jre\ext",然後就可以調用JExcelAPI了。如果出現編譯報錯「找不到java.jxl包」,則可能是沒有設置成功。這時,如果有Eclipse開發工具,可以在"Build Path"中添加"External Library",找到jxl.jar的路徑,然後就能編譯成功了。

2、Excel基礎操作實例

(1) 創建Excel文件

/**讀取Excel文件的內容
* @param file 待讀取的文件
* @return // 生成Excel的類 */
package createxls;

import java.io.File;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class CreateXLS {
public static void main(String args[]) {
try {
// 打開文件
WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
// 生成名為「第一頁」的工作表,參數0表示這是第一頁
WritableSheet sheet = book.createSheet( " 第一頁 " , 0 );
// 在Label對象的構造子中指名單元格位置是第一列第一行(0,0)
// 以及單元格內容為test
Label label = new Label( 0 , 0 , " test " );

// 將定義好的單元格添加到工作表中
sheet.addCell(label);

// 寫入數據並關閉文件
book.write();
book.close();

} catch (Exception e) {
System.out.println(e);
}
}
}

(2)讀Excel文件

package readxls;

//讀取Excel的類
import java.io.File;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class ReadXLS {
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);
e.printStackTrace();
}
}
}

(3)合並單元格、格式化單元格等

//合並單元格並在單元格中輸入內容

package additionalproperty;

import java.io.*;
import jxl.write.*;
import jxl.*;

public class MergeCells {
public static void main(String [] args){
try{
WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
WritableSheet sheet = book.createSheet("第一頁", 0);
sheet.mergeCells(3, 3, 6, 6); //合並單元格

//設置填充內容的格式
WritableFont font = new WritableFont(WritableFont.TIMES, 30, WritableFont.BOLD);
WritableCellFormat format = new WritableCellFormat(font);
format.setAlignment(jxl.format.Alignment.CENTRE); //水平居中
format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中
format.setBackground(jxl.format.Colour.BLUE); //背景顏色和樣式
format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THICK); //邊框樣式

Label label = new Label(3, 3, "合並", format); //添加內容
sheet.addCell(label);
book.write();
book.close();
}//end try
catch (Exception e){
e.printStackTrace();
}
}
}

(4)添加圖片

JExcelAPI對圖片的操作有限:它不能生成圖表、圖片和宏,但是復制工作表時,這些信息可以保留復制。而且當向工作表中添加圖片時,只能支持PNG格式的圖片。

//在工作表中添加圖片

package handleimage;

import java.io.*;
import jxl.*;
import jxl.write.*;

public class CreateImage {
public static void main(String [] args){
try{
WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
WritableSheet sheet = book.createSheet("第一頁", 0);
WritableImage image = new WritableImage(3.5, 3.5, 4.3, 8.7, //定義圖片格式
new File("C:\\Documents and Settings\\Wei Li\\My Documents\\My Pictures\\Water lilies.PNG"));
sheet.addImage(image); //添加圖片

book.write();
book.close();
}//end try
catch (Exception e){ e.printStackTrace(); }
}
}

⑸ 急求各路大神:java怎麼處理一個excel

類似這樣:
package com.li.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

⑹ JAVA如何操作EXCEL

POI對excel的支持算是好的了。
但也沒有你說的那樣列印,預覽,功能。

如果是應用程序,不是很好處理。
如果是web程序,可以如下處理。

1.在後台用POI類庫生成excel。
2.用流的方式,將生成的excel傳遞給前台瀏覽器,在瀏覽器中打開。
3.使用瀏覽器的列印功能來進行列印。

⑺ java如何讀取整個excel文件的內容

在Java中讀取Excel文件的內容

在這里,我使用的是一個叫Java Excel API的東西,類似的還有的POI,不過感覺那個

太復雜了點兒。而且jxl對中文的支持相當的好,至少我在用的過程中一點問題沒出。

一、下載地址

http://www.andykhan.com/jexcelapi/

二、特性

可以讀取Excel 95, 97, 2000文件

可以讀或寫Excel 97及其以後版本的的公式(不過我發現好像有bug)

生成Excel 97格式的電子表格

支持字體、數字和日期格式化

支持單元格的顏色和陰影

可以編輯現有的文件

三、讀文件

//聲明一下,記得後面要關閉哦。。

Workbook workbook = null;

try {

workbook = Workbook.getWorkbook(new File("d:\temp\TestRead.xls"));

} catch (Exception e) {

throw new Exception("file to import not found!");

}

Sheet sheet = workbook.getSheet(0);

Cell cell = null;

int columnCount=3;

int rowCount=sheet.getRows();

for (int i = 0; i<rowcount; p="" {

for (int j = 0; j<columncount; p="" {

//注意,這里的兩個參數,第一個是表示列的,第二才表示行

cell=sheet.getCell(j, i);

//要根據單元格的類型分別做處理,否則格式化過的內容可能會不正確

if(cell.getType()==CellType.NUMBER){

System.out.print(((NumberCell)cell).getValue());

}

else if(cell.getType()==CellType.DATE){

System.out.print(((DateCell)cell).getDate());

}

else{

System.out.print(cell.getContents());

}

//System.out.print(cell.getContents());

System.out.print(" ");

}

System.out.print(" ");

}

//關閉它,否則會有內存泄露

workbook.close();

⑻ JAVA操作Excel具體代碼

你需要的東西叫POI,它的官網是:://poi.apache.org/
你可以下載源文件包(src),裡面有快速開發想到,裡面有很多使用的例子。使用的時候可以下載二進制包(bin)。

其中的一個例子:
Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet("new sheet");
Row row = sheet.createRow((short)2);
row.createCell(0).setCellValue(1.1);
row.createCell(1).setCellValue(new Date());
row.createCell(2).setCellValue(Calendar.getInstance());
row.createCell(3).setCellValue("a string");
row.createCell(4).setCellValue(true);
row.createCell(5).setCellType(HSSFCell.CELL_TYPE_ERROR);

// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();

⑼ java如何讀取整個excel文件的內容

在Java中讀取Excel文件的內容

在這里,我使用的是一個叫Java Excel API的東西,類似的還有jakarta的POI,不過感覺那個

太復雜了點兒。而且jxl對中文的支持相當的好,至少我在用的過程中一點問題沒出。

一、下載地址

http://www.andykhan.com/jexcelapi/

二、特性

可以讀取Excel 95, 97, 2000文件

可以讀或寫Excel 97及其以後版本的的公式(不過我發現好像有bug)

生成Excel 97格式的電子表格

支持字體、數字和日期格式化

支持單元格的顏色和陰影

可以編輯現有的文件

三、讀文件

//聲明一下,記得後面要關閉哦。。

Workbook workbook = null;

try {

workbook = Workbook.getWorkbook(new File("d:\temp\TestRead.xls"));

} catch (Exception e) {

throw new Exception("file to import not found!");

}

Sheet sheet = workbook.getSheet(0);

Cell cell = null;

int columnCount=3;

int rowCount=sheet.getRows();

for (int i = 0; i<rowcount; p="" {

for (int j = 0; j<columncount; p="" {

//注意,這里的兩個參數,第一個是表示列的,第二才表示行

cell=sheet.getCell(j, i);

//要根據單元格的類型分別做處理,否則格式化過的內容可能會不正確

if(cell.getType()==CellType.NUMBER){

System.out.print(((NumberCell)cell).getValue());

}

else if(cell.getType()==CellType.DATE){

System.out.print(((DateCell)cell).getDate());

}

else{

System.out.print(cell.getContents());

}

//System.out.print(cell.getContents());

System.out.print(" ");

}

System.out.print(" ");

}

//關閉它,否則會有內存泄露

workbook.close();

⑽ 如何用JAVA讀取EXCEL文件裡面的數據

使用poi能解決你的問題
或者是
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import static java.lang.System.out;

public class FileTest {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String string = "";
File file = new File("c:" + File.separator + "xxx.xls");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String str;
while((str = br.readLine()) != null) {
string += str;
}
out.println(string);
}

}