问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java实现excel导入数据怎么读取

发布网友 发布时间:2022-04-23 09:03

我来回答

2个回答

热心网友 时间:2022-05-19 13:31

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 Test0 {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException,
IOException {
File file = new File("C://test01.xls");// Excel文件路径
String[][] result = getData(file, 1);
int rowLength = result.length;
for (int i = 0; i < rowLength; i++) {
for (int j = 0; j < result[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 {
List<String[]> result = new ArrayList<String[]>();
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);
}
}

热心网友 时间:2022-05-19 14:49

引用:
*mysql的jar文件
*Spring_HOME/lib/poi/*.jar
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
螳螂捕蝉、螳螂捕蝉什么意思? 为什么电视机的声音这么小? 电视音量调到最大,为什么还是声音很小? 为什么我的电视声音很小呢? 浏览器怎么设置自动保存密码 一句话形容滕王阁序作者的感情基调、语言要有文采 滕王阁序经典名言警句,《滕王阁序》7句名言 滕王阁最经典的诗句【好句摘抄89句】 滕王阁序选一句话翻译写作文 滕王阁序中挑选一句话并附上100字左右介绍'求原创? 保定儿童社保里包含意外险吗 月子里适合做什么运动? 家长买社保小孩意外骨折社保可以赔付吗? 坐月子能做什么运动减肥 儿童意外保险可以保哪些,怎么买儿童意外险好 演唱会门票哪里买,哪个网站更正规? 在产褥期,产妇到底可不可以进行运动? 儿童意外险 限社保范围内 儿童保险(社保、商业保险)? 演唱会门票在哪里买 演唱会门票怎么买 坐月子能不能运动? 如何将excel中的数据导入到java程序 一般演唱会的门票应该去哪买? 坐月子可以健身运动吗 17岁可以买社保跟意外保险吗? 坐月子应该如何进行运动? 周杰伦演唱会门票在哪里买? 坐月子一定要卧床休息吗?月子期间能运动吗? 孩子摔伤住院,医保和学校意外险怎么报? 音乐节门票在哪里可以买? 请问儿童社保可以报销哪些项目? 坐月子可以做什么运动减肥 怎样将Excel文件导入数据库(在JSP环境下Java代码) 坐月子可以做什么运动修复 少儿受伤社保和意外险能同时报吗 如何用java导入Excel数据到数据库? 小学生交社保和意外险有用吗有用吗 坐月子期间能运动么 选择儿童意外医疗保险须注意什么 java做了个excel导入功能,如何提高导入效率? java如何导入excel文件在页面显示树结构 了解香港余人生保婴丹的急切求助!!! 现在燕窝很热啊,电视上卖,做广告~~~以前吃过余仁生的~~都来说说... 小狗突然一直打喷嚏,还到处喷鼻涕,怎么回事啊? 狗狗打喷嚏流鼻涕怎么了??? 狗狗一直打喷嚏,流鼻涕是怎么回事 狗狗流清鼻涕怎么回事? 我家小狗总爱往人脸上喷鼻涕,咋回事 狗狗总擤鼻涕怎么回事啊 狗狗一直流鼻涕是怎么回事