「java读写excel」java读写锁使用场景

博主:adminadmin 2022-12-22 01:54:08 60

今天给各位分享java读写excel的知识,其中也会对java读写锁使用场景进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java如何读写excel2010

package com.b2bjy.crm.util;

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.poi.hssf.usermodel.HSSFDateUtil;

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

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.DateUtil;

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 POIExcelUtil

{

/** *//** 总行数 */

private int totalRows = 0;

/** *//** 总列数 */

private int totalCells = 0;

/** *//** 构造方法 */

public POIExcelUtil()

{}

/** *//**

* ul

* liDescription:[根据文件名读取excel文件]/li

* liCreated by [Huyvanpull] [Jan 20, 2010]/li

* liMidified by [modifier] [modified time]/li

* ul

*

* @param fileName

* @return

* @throws Exception

*/

public ArrayListString read(String fileName)

{

ArrayListString dataLst = new ArrayListString();

/** *//** 检查文件名是否为空或者是否是Excel格式的文件 */

if (fileName == null || !fileName.matches("^.+\\.(?i)((xls)|(xlsx))$"))

{

return dataLst;

}

boolean isExcel2003 = true;

/** *//** 对文件的合法性进行验证 */

if (fileName.matches("^.+\\.(?i)(xlsx)$"))

{

isExcel2003 = false;

}

/** *//** 检查文件是否存在 */

File file = new File(fileName);

if (file == null || !file.exists())

{

return dataLst;

}

try

{

/** *//** 调用本类提供的根据流读取的方法 */

dataLst = read(new FileInputStream(file), isExcel2003);

}

catch (Exception ex)

{

ex.printStackTrace();

}

/** *//** 返回最后读取的结果 */

return dataLst;

}

/** *//**

* ul

* liDescription:[根据流读取Excel文件]/li

* liCreated by [Huyvanpull] [Jan 20, 2010]/li

* liMidified by [modifier] [modified time]/li

* ul

*

* @param inputStream

* @param isExcel2003

* @return

*/

public ArrayListString read(InputStream inputStream,

boolean isExcel2003)

{

ArrayListString dataLst = null;

try

{

/** *//** 根据版本选择创建Workbook的方式 */

Workbook wb = isExcel2003 ? new HSSFWorkbook(inputStream)

: new XSSFWorkbook(inputStream);

dataLst = read(wb);

}

catch (IOException e)

{

e.printStackTrace();

}

return dataLst;

}

/** *//**

* ul

* liDescription:[得到总行数]/li

* liCreated by [Huyvanpull] [Jan 20, 2010]/li

* liMidified by [modifier] [modified time]/li

* ul

*

* @return

*/

public int getTotalRows()

{

return totalRows;

}

/** *//**

* ul

* liDescription:[得到总列数]/li

* liCreated by [Huyvanpull] [Jan 20, 2010]/li

* liMidified by [modifier] [modified time]/li

* ul

*

* @return

*/

public int getTotalCells()

{

return totalCells;

}

/** *//**

* ul

* liDescription:[读取数据]/li

* liCreated by [Huyvanpull] [Jan 20, 2010]/li

* liMidified by [modifier] [modified time]/li

* ul

*

* @param wb

* @return

*/

private ArrayListString read(Workbook wb)

{

ArrayListString rowLst = new ArrayListString();

/** *//** 得到第一个shell */

Sheet sheet = wb.getSheetAt(0);

this.totalRows = sheet.getPhysicalNumberOfRows();

if (this.totalRows = 1 sheet.getRow(0) != null)

{

this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();

}

/** *//** 循环Excel的行 */

for (int r = 0; r this.totalRows; r++)

{

Row row = sheet.getRow(r);

if (row == null)

{

continue;

}

/** *//** 循环Excel的列 */

for (short c = 0; c 1; c++)

{

Cell cell = row.getCell(c);

String cellValue = "";

if (cell == null)

{

rowLst.add(cellValue);

continue;

}

/** *//** 处理数字型的,自动去零 */

if (Cell.CELL_TYPE_NUMERIC == cell.getCellType())

{

cellValue = getRightStr(cell.getNumericCellValue() + "");

}

/** *//** 处理字符串型 */

else if (Cell.CELL_TYPE_STRING == cell.getCellType())

{

cellValue = cell.getStringCellValue();

}

/** *//** 处理布尔型 */

else if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType())

{

cellValue = cell.getBooleanCellValue() + "";

}

/** *//** 其它的,非以上几种数据类型 */

else

{

cellValue = cell.toString() + "";

}

rowLst.add(cellValue);

}

}

return rowLst;

}

/** *//**

* ul

* liDescription:[正确地处理整数后自动加零的情况]/li

* liCreated by [Huyvanpull] [Jan 20, 2010]/li

* liMidified by [modifier] [modified time]/li

* ul

*

* @param sNum

* @return

*/

private String getRightStr(String sNum)

{

DecimalFormat decimalFormat = new DecimalFormat("#.000000");

String resultStr = decimalFormat.format(new Double(sNum));

if (resultStr.matches("^[-+]?\\d+\\.[0]+$"))

{

resultStr = resultStr.substring(0, resultStr.indexOf("."));

}

return resultStr;

}

/** *//**

* ul

* liDescription:[测试main方法]/li

* liCreated by [Huyvanpull] [Jan 20, 2010]/li

* liMidified by [modifier] [modified time]/li

* ul

*

* @param args

* @throws Exception

*/

public String getPhones(){

ArrayListString dataLst = new POIExcelUtil().read("D:\\b.xls");

StringBuffer rowData = new StringBuffer();

for (int i = 0; i dataLst.size()-1; i++) {

rowData.append(dataLst.get(i)).append(",");

}

rowData.append(dataLst.get(dataLst.size()-1));

if (rowData.length() 0)

{

System.out.println(rowData);

}

return rowData.toString();

}

public static void main(String[] args) throws Exception

{

System.out.println(new POIExcelUtil().getPhones());

}

}

java如何读取整个excel文件的内容?

在java程序添加spire.xls.jar依赖

import com.spire.xls.*;

public class ReadExcel {

    public static void main(String[] args) {

        //创建Workbook对象

        Workbook wb = new Workbook();

        //加载一个Excel文档

        wb.loadFromFile("C:\\Users\\Administrator\\Desktop\\test.xlsx");

        //获取第一个工作表

        Worksheet sheet = wb.getWorksheets().get(0);

        //遍历工作表的每一行

        for (int i = 1; i  sheet.getLastRow() + 1; i++) {

            //遍历工作的每一列

            for (int j = 1; j  sheet.getLastColumn() + 1; j++) {

                //输出指定单元格的数据

                System.out.print(sheet.get(i,j).getText());

                System.out.print("\t");

            }

            System.out.print("\n");

        }

    }

}

java中怎样从Excel中读写数据

Java EXCEL API简介 

Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。

应用示例 

从Excel文件读取数据表 

Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:  需要用到一个开源的jar包,jxl.jar。

File file = new File("c:\\a.xls");  

InputStream in = new FileInputStream(file);  

Workbook workbook = Workbook.getWorkbook(in);  

//获取第一张Sheet表  

Sheet sheet = workbook.getSheet(0);  

  

//我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。  

//获取第一行,第一列的值   

Cell c00 = rs.getCell(0, 0);   

String strc00 = c00.getContents();   

//获取第一行,第二列的值   

Cell c10 = rs.getCell(1, 0);   

String strc10 = c10.getContents();   

//我们可以通过指定行和列得到指定的单元格Cell对象  

  Cell cell = sheet.getCell(column, row);  

  //也可以得到某一行或者某一列的所有单元格Cell对象  

  Cell[] cells = sheet.getColumn(column);  

  Cell[] cells2 = sheet.getRow(row);  

  //然后再取每一个Cell中的值  

  String content = cell.getContents();

java怎么读取上传的excel文件

java怎么读取上传的excel文件,解决办法:

添加jar文件,java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。

jxl对Excel表格的认识,每个单元格的位置认为是由一个二维坐标(i,j)给定,其中i表示列,j表示行,并且从上到下递增,从左到右递增。

对于合并单元格的以最左,最上的单元格的坐标为准。如下图中t.xls,一班名单(0,0),陈茵(1,2),陈开先(1,6)。

4.java代码对t.xls的读取

ava操作Excel的一种方法:

在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。

其中jExcelAPI是一个韩国程序员的作品,虽然没有POI那样血统高贵,但是在使用过程中,感觉简单方便,对中文支持非常好,功能也比较强大。

java如何读取整个excel文件的内容

本例使用java来读取excel的内容并展出出结果,代码如下:

复制代码 代码如下:

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.text.DecimalFormat;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Date;

import java.util.List;

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

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

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

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

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

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class ExcelOperate {

public static void main(String[] args) throws Exception {

File file = new File("ExcelDemo.xls");

String[][] result = getData(file, 1);

int rowLength = result.length;

for(int i=0;irowLength;i++) {

for(int j=0;jresult[i].length;j++) {

System.out.print(result[i][j]+"\t\t");

}

System.out.println();

}

}

/**

* 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行

* @param file 读取数据的源Excel

* @param ignoreRows 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1

* @return 读出的Excel中数据的内容

* @throws FileNotFoundException

* @throws IOException

*/

public static String[][] getData(File file, int ignoreRows)

throws FileNotFoundException, IOException {

ListString[] result = new ArrayListString[]();

int rowSize = 0;

BufferedInputStream in = new BufferedInputStream(new FileInputStream(

file));

// 打开HSSFWorkbook

POIFSFileSystem fs = new POIFSFileSystem(in);

HSSFWorkbook wb = new HSSFWorkbook(fs);

HSSFCell cell = null;

for (int sheetIndex = 0; sheetIndex wb.getNumberOfSheets(); sheetIndex++) {

HSSFSheet st = wb.getSheetAt(sheetIndex);

// 第一行为标题,不取

for (int rowIndex = ignoreRows; rowIndex = st.getLastRowNum(); rowIndex++) {

HSSFRow row = st.getRow(rowIndex);

if (row == null) {

continue;

}

int tempRowSize = row.getLastCellNum() + 1;

if (tempRowSize rowSize) {

rowSize = tempRowSize;

}

String[] values = new String[rowSize];

Arrays.fill(values, "");

boolean hasValue = false;

for (short columnIndex = 0; columnIndex = row.getLastCellNum(); columnIndex++) {

String value = "";

cell = row.getCell(columnIndex);

if (cell != null) {

// 注意:一定要设成这个,否则可能会出现乱码

cell.setEncoding(HSSFCell.ENCODING_UTF_16);

switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_STRING:

value = cell.getStringCellValue();

break;

case HSSFCell.CELL_TYPE_NUMERIC:

if (HSSFDateUtil.isCellDateFormatted(cell)) {

Date date = cell.getDateCellValue();

if (date != null) {

value = new SimpleDateFormat("yyyy-MM-dd")

.format(date);

} else {

value = "";

}

} else {

value = new DecimalFormat("0").format(cell

.getNumericCellValue());

}

break;

case HSSFCell.CELL_TYPE_FORMULA:

// 导入时如果为公式生成的数据则无值

if (!cell.getStringCellValue().equals("")) {

value = cell.getStringCellValue();

} else {

value = cell.getNumericCellValue() + "";

}

break;

case HSSFCell.CELL_TYPE_BLANK:

break;

case HSSFCell.CELL_TYPE_ERROR:

value = "";

break;

case HSSFCell.CELL_TYPE_BOOLEAN:

value = (cell.getBooleanCellValue() == true ? "Y"

: "N");

break;

default:

value = "";

}

}

if (columnIndex == 0 value.trim().equals("")) {

break;

}

values[columnIndex] = rightTrim(value);

hasValue = true;

}

if (hasValue) {

result.add(values);

}

}

}

in.close();

String[][] returnArray = new String[result.size()][rowSize];

for (int i = 0; i returnArray.length; i++) {

returnArray[i] = (String[]) result.get(i);

}

return returnArray;

}

/**

* 去掉字符串右边的空格

* @param str 要处理的字符串

* @return 处理后的字符串

*/

public static String rightTrim(String str) {

if (str == null) {

return "";

}

int length = str.length();

for (int i = length - 1; i = 0; i--) {

if (str.charAt(i) != 0x20) {

break;

}

length--;

}

return str.substring(0, length);

}

}

用java读excel的数据。

通过java的poi读取xlsx文件:

将excel文件使用文件流读取

把excel的文件流转化成excel的工作薄

获取工作薄的sheet(工作表),迭代获取

最后再次迭代每一个sheet,获取每一行的每一个单元格,把数据取出存储起来

java读写excel的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java读写锁使用场景、java读写excel的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。