Ⅰ java实现EXCEL表格文件(.xls格式)的读取、修改、保存、另存为、排序等操作。大佬们帮帮忙
 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如何读取整个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;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);
 }
} 
Ⅲ 要用Java POI读取Excel文件中的数据,并且实现对数据的格式校验,输入错误信息
 在使用Java POI读取Excel文件时,需要根据具体需求进行操作。如果仅提供一个POI读取Excel的大致方法,可能难以满足实际需求。例如,对于不同列的数据类型,需要进行明确的定义和处理。比如,某列数据应视为时间类型,另一列则应视为数字类型,若直接读取,系统将无法识别这些数据的具体格式,从而导致错误。
因此,读取Excel文件时,应当先了解数据的具体格式。这包括但不限于时间、数字、文本等多种类型。只有在明确数据类型的情况下,才能进行正确的读取和处理。比如,对于时间类型的数据,需要使用相应的时间格式进行解析;对于数字类型的数据,则需要确保其格式正确,避免读取时产生错误。
在读取过程中,还需对数据进行格式校验,确保其符合预设的要求。比如,对于时间类型的数据,可以检查其是否符合特定的日期格式;对于数字类型的数据,可以检查其是否为有效的数字值。如果发现不符合预设格式的数据,应记录错误信息,以便后续处理或提示用户修正错误。
综上所述,读取Excel文件时,不能盲目进行,而应结合具体需求,对数据类型进行明确定义,并对数据进行格式校验,以确保读取过程的准确性和可靠性。 
Ⅳ java能读写同一个excel吗
 是的,Java能够读取和写入同一个Excel文件,但需要谨慎操作。在进行读取操作后,必须确保关闭读取流,以避免写入操作时发生冲突。否则,可能会导致数据丢失或格式错误等问题。为了确保数据的完整性和准确性,通常推荐使用专门的库,如Apache POI或JXL等,它们提供了丰富的API来处理Excel文件。
使用这些库时,读取操作通常涉及到创建一个Workbook对象,通过Sheet对象访问具体的Sheet,然后通过Row和Cell对象访问数据。完成读取后,务必关闭输入流,释放资源。接下来,你可以使用同样的Workbook对象进行写入操作。需要注意的是,写入操作应尽量避免在读取流仍然打开的情况下进行。
为了更好地管理资源,可以使用try-with-resources语句来自动关闭流。例如,在读取Excel文件后,可以这样写:
try (FileInputStream fis = new FileInputStream(new File("path/to/file.xlsx"))) {
 Workbook workbook = new XSSFWorkbook(fis);
}
这样可以确保在读取完成后,输入流会自动关闭,从而避免了资源泄漏的问题。在写入操作中,同样可以使用类似的方法来确保资源的正确管理。
除了资源管理之外,使用合适的库还可以帮助你更高效地处理复杂的Excel文件,例如处理多个Sheet、合并单元格、设置样式等。因此,对于需要频繁读写Excel文件的场景,推荐使用成熟的库来提高开发效率和代码质量。
综上所述,Java确实可以读取和写入同一个Excel文件,但需要遵循一些最佳实践,以确保操作的顺利进行和数据的安全。 
Ⅳ 在java中如何使用poi从excel中读取数据
 使用EasyExcel读取Excel文件在Java中的流程相当直观,藉助于阿里开源的EasyExcel库,开发者可以轻松地完成这一任务。EasyExcel提供了一套简单而强大的API,帮助开发者快速实现Excel数据的读取。
以下是一个示例代码,展示如何使用EasyExcel读取Excel文件:
java
List dataList = EasyExcel.read("/path/to/your/excel/file.xlsx")
 .sheet()
 .doRead();
这里需要注意的是,您需要将`/path/to/your/excel/file.xlsx`替换为实际的Excel文件路径,同时,`YourData`类应当根据Excel文件中的列名和数据类型进行创建,以确保与文件内容的匹配。请根据实际项目需求定义这个类。
为了深入了解EasyExcel的用法和功能,您还可以参考其官方文档:基于Java的Excel处理工具 | Easy Excel。这份文档提供了详细的API介绍、示例代码以及常见问题解答,有助于您更熟练地使用这个库。
总之,使用EasyExcel进行Excel文件数据读取是一个高效且便捷的过程。藉助于其简单的API和丰富的文档支持,开发者可以轻松地将Excel数据整合到Java应用中,从而实现更加灵活和强大的数据处理功能。 
