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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何读取整个excel文件的内容相关的知识,希望对你有一定的参考价值。

参考技术A 工具:
参考代码及注释如下:
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);
参考技术B 这个问题在java贴吧里常见,并且有很多方式完成,这里就给你贴一份,你试着在贴吧里和百度知道里,学习程序方面的问题解答。
public String[][] readExcel(String filePath)
String[][] s = null;
try
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
filePath));
HSSFSheet sheet = workbook.getSheetAt(0);
int rows = sheet.getPhysicalNumberOfRows();
s = new String[rows][];
if (rows > 0)
// 获取总列数`
int cells = sheet.getRow(0).getPhysicalNumberOfCells();
for (int r =0; r < rows; r++)

HSSFRow row = sheet.getRow(r);
String[] cellsvalue = new String[cells+1];
for (short c = 0; c < cells; c++)
String value = "";
HSSFCell cell = row.getCell(c);
if (cell != null)
switch (cell.getCellType())
case HSSFCell.CELL_TYPE_FORMULA:
//
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell))
value = new java.text.SimpleDateFormat(
"yyyy-MM-dd").format(cell
.getDateCellValue());
else
value = String.valueOf(cell
.getNumericCellValue());

break;
case HSSFCell.CELL_TYPE_STRING:
value = cell.getStringCellValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
value="";
default:
break;

if (cell == null)
value="";


cellsvalue[c] = value;
if(value.endsWith(".0"))
cellsvalue[c] = value.substring(0, value.length()-2);


s[r] = cellsvalue;
java.io.File myfile = new java.io.File(filePath);
if (myfile.exists())
myfile.delete();



catch (Exception ex)
// TODO 自动生成 catch 块

ex.printStackTrace();

return s;
参考技术C 本例使用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;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 = c

如何批量读取csv格式的文件名及文件内容到新的Excel中?

现在有上万个csv文件,名称均是按照“年月日小时分”的规则命名(如1992-1-1-0900.csv、1999-8-1-1400.csv),每个csv文件都是固定格式的表格,只是数据列有区别。如何批量读取文件名及某一行的内容,分别放到新的Excel文件中?

首先肯定要用宏来实现。

可以把要打开的文件放到一个统一目录里,使用宏依次打开并读取数据,然后根据你的逻辑写入新文件中。
下面是个简单例子,测试通过。
读取宏文件和csv文件在一个目录里,宏通过当前程序得到当前目录,从当前目录里依次打开每个文件(当前宏文件跳过),读取每个csv文件第2行,贴到当前宏文件里。
注意运行前只打开宏文件,另外,若需要,手工删除sheet1里存在内容,不了解你具体详细的需求,就做个例子提供一下参考。
Sub zzh_abc()
On Error GoTo out1
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")

Set folder = Fso.GetFolder(ThisWorkbook.Path)
i = 1
For Each f In folder.Files
If InStr(f.Name, ThisWorkbook.Name) = False Then
Filename = ThisWorkbook.Path & "\" & f.Name
Workbooks.Open Filename:=Filename
Rows("2:2").Select 'select row to copy
Selection.Copy
Application.DisplayAlerts = False
Workbooks(2).Close savechanges:=False
'Worksheets("sheet1").Select
Cells(i, 1).Select 'copy by increasing one new line
ActiveSheet.Paste
i = i + 1
End If
Next
Exit Sub

out1:
End Sub
参考技术A 对于重复且有规律的操作,可以使用 Office 自带的 VBA(Visual BASIC for Application)功能来实现。
也就是说,需要一定的编程工作。
参考技术B 需要编写vba程序来完成 参考技术C 可以, 报价 80

以上是关于java如何读取整个excel文件的内容的主要内容,如果未能解决你的问题,请参考以下文章

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

如何使用 Java 灵活读取 Excel 内容?

如何使用 Java 灵活读取 Excel 内容?

Java中如何读取excel文件内容并且将内容以表格的形式显示在窗体里?

java如何直接从流中读取excel的文件内容?Stream

如何使用java从excel表提取内容