java讀取xlsx
Ⅰ 使用java讀取xlsx格式的execl,除了poi還有哪些方式
一般就用POI、JXL
但是JXL2011年後好像就沒更新了,不支持Office2007後的xlsx文件
所以大多數都在用POI
兩者使用大同小異,都一樣簡單,找個Demo就能熟悉
若因限制不能使用POI(平台沖突等)是否需要考慮回頭用JXL?那要看你能否接受只支持office2007的 xls文件
Ⅱ 如何用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);
}
}
Ⅲ JAVA讀取EXCEL文件
相關功能代碼比較多 貼出來不是很方便 我跟你說一下思路吧
首先是用到的工具是poi 這個你可以去官網載一個
其次 你要注意區分你的excel 是舊的還是新的 office 07版之前和07版之後的 讀取的類不一樣
把握住這2點 差不多就OK了
大體的讀取流程是
讀取workbook -> sheet -> row -> col
Ⅳ 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文件的內容
在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 怎麼讀xlsx文件
需要jxl的包
//打開文件
Workbook book = Workbook.getWorkbook(new File(path)) ;
//取得第一個sheet
Sheet sheet = book.getSheet(0);
int rows = sheet.getRows();
//i和j是你要的行和列
Cell [] cell = sheet.getRow(i);
Cell cloumn_cell = sheet.getCell(j, i);
//str是你的內容
String str = cloumn_cell.getContents();
方法有點老了 不知道能不能幫到你
Ⅶ 用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文件
參考代碼及注釋如下:
import Java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class ReadExcel {
public static void readExcel(File file){
try {
InputStream inputStream = new FileInputStream(file);
String fileName = file.getName();
Workbook wb = null;
// poi-3.9.jar 只可以讀取2007以下的版本,後綴為:xsl
wb = new HSSFWorkbook(inputStream);//解析xls格式
Sheet sheet = wb.getSheetAt(0);//第一個工作表 ,第二個則為1,以此類推...
int firstRowIndex = sheet.getFirstRowNum();
int lastRowIndex = sheet.getLastRowNum();
for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex ++){
Row row = sheet.getRow(rIndex);
if(row != null){
int firstCellIndex = row.getFirstCellNum();
// int lastCellIndex = row.getLastCellNum();
//此處參數cIndex決定可以取到excel的列數。
for(int cIndex = firstCellIndex; cIndex < 3; cIndex ++){
Cell cell = row.getCell(cIndex);
String value = "";
if(cell != null){
value = cell.toString();
System.out.print(value+"\t");
}
}
System.out.println();
}
}
} catch (FileNotFoundException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
}
public static void main(String[] args) {
File file = new File("D:/test.xls");
readExcel(file);
}
}
Ⅸ java如何讀取xlsx並存入資料庫
The server encountered an internal error () that prevented it from fulfilling this request.
package Read;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
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.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import bean.define;
public class readxlsx {
public List<List<String>> readxl(String path) throws IOException{
InputStream is = new FileInputStream(path);
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
List<List<String>> result = new ArrayList<List<String>>();
/*
//Sheet xssfSheet = null;
//循環每一頁,並處理當前循環頁*/
for (XSSFSheet xssfSheet: xssfWorkbook) {
if (xssfSheet == null)
continue;
//處理當前頁,循環讀取每一行
for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++){
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
int minColIx = xssfRow.getFirstCellNum();
int maxColIx = xssfRow.getLastCellNum();
List<String> rowList = new ArrayList<String>();
//List<define> list = null;
//遍歷該行,獲取處理每個cell元素
for (int colIx = minColIx; colIx < maxColIx; colIx++) {
XSSFCell cell = xssfRow.getCell(colIx);
if(cell == null) {
define define = new define();
XSSFCell id = xssfRow.getCell(0);
XSSFCell what = xssfRow.getCell(1);
define.setId(id.getStringCellValue());
define.setWhat(what.getStringCellValue());
continue;
}
rowList.add(cell.toString());
}
result.add(rowList);
}
}
return result;
}
}
package com.runoob.test;
import java.io.IOException;
import java.util.List;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Dao.;
import bean.define;
import Read.readxlsx;
public class adden extends HttpServlet{
private define define;
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
readxlsx readxlsx = new readxlsx();
String path = request.getParameter("path");
PrintWriter out = response.getWriter();
List<List<String>> list = readxlsx.readxl(path);
String id = request.getParameter("id");
String what = request.getParameter("what");
List<String> de = new define();
d = new ();
for(int i=0;i<list.size();i++){
de=list.get(i);
if(.adden(define)){
response.sendRedirect("index.jsp");
}
else out.println("讀取失敗");
}
out.flush();
out.close();
}
}
Ⅹ 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();