Java使用poi操作cexel

时间:2024-12-18 10:02:49

Java操作excel比较简单,但是时间长了就会忘记,因此基本的简单操作做个记录。

依赖poi的jar包,pom.xml配置如下:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>excelDemo1</groupId>
  5. <artifactId>excelDemo1</artifactId>
  6. <packaging>war</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>excelDemo1 Maven Webapp</name>
  9. <url>http://maven.apache.org</url>
  10. <dependencies>
  11. <dependency>
  12. <groupId>junit</groupId>
  13. <artifactId>junit</artifactId>
  14. <version>3.8.1</version>
  15. <scope>test</scope>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.apache.poi</groupId>
  19. <artifactId>poi</artifactId>
  20. <version>3.8</version>
  21. </dependency>
  22. </dependencies>
  23. <build>
  24. <finalName>excelDemo1</finalName>
  25. </build>
  26. </project>

相应的java测试代码分别如下:

  1. package excelDemo1;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.OutputStream;
  5. import org.apache.poi.hssf.usermodel.HSSFRow;
  6. import org.apache.poi.hssf.usermodel.HSSFSheet;
  7. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  8. public class ExcelDemo0 {
  9. /**
  10. * java生成excel文件并写入磁盘
  11. *
  12. * @author:tuzongxun
  13. * @Title: main
  14. * @param@param args
  15. * @return void
  16. * @date Apr 28,2016 7:32:52 PM
  17. * @throws
  18. */
  19. public static void main(String[] args) {
  20. //C:\Users\tuzongxun123\Desktop桌面,windows和linux的斜杠不一样,而且java对于“/”需要转义处理,File.separator可以实现跨平台
  21. File file = new File("C:" + File.separator + "Users" + File.separator
  22. + "tuzongxun123" + File.separator + "Desktop" + File.separator
  23. + "ioFile" + File.separator + "user.xls");
  24. try {
  25. OutputStream outputStream = new FileOutputStream(file);
  26. // 创建excel文件,注意这里的hssf是excel2007及以前版本可用,2007版以后的不可用,要用xssf
  27. HSSFWorkbook workbook = new HSSFWorkbook();
  28. // 创建excel工作表
  29. HSSFSheet sheet = workbook.createSheet("user");
  30. // 为工作表增加一行
  31. HSSFRow row = sheet.createRow(0);
  32. // 在指定的行上增加两个单元格
  33. row.createCell(0).setCellValue("name");
  34. row.createCell(1).setCellValue("password");
  35. // 调用输出流把excel文件写入到磁盘
  36. workbook.write(outputStream);
  37. // 关闭输出流
  38. outputStream.close();
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. }
    1. package excelDemo1;
    2. import java.io.BufferedInputStream;
    3. import java.io.File;
    4. import java.io.FileInputStream;
    5. import org.apache.poi.hssf.usermodel.HSSFRow;
    6. import org.apache.poi.hssf.usermodel.HSSFSheet;
    7. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    8. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    9. /**
    10. * 读取excel文件
    11. *
    12. * @author tuzongxun123
    13. *
    14. */
    15. public class ExcelDemo2 {
    16. public static void main(String[] agrs) {
    17. try {
    18. // 获取excel文件输入流
    19. FileInputStream fileInputStream = new FileInputStream("C:"
    20. + File.separator + "Users" + File.separator
    21. + "tuzongxun123" + File.separator + "Desktop"
    22. + File.separator + "ioFile" + File.separator + "user.xls");
    23. BufferedInputStream bufferedInputStream = newBufferedInputStream(
    24. fileInputStream);
    25. POIFSFileSystem fileSystem = new POIFSFileSystem(
    26. bufferedInputStream);
    27. // 获取excel文件
    28. HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fileSystem);
    29. // 根据名称获取指定的excel工作薄
    30. HSSFSheet sheet = hssfWorkbook.getSheet("user");
    31. // 这里实际上可以用sheet.rowIterator()来遍历
    32. for (int i = 1;; i++) {
    33. HSSFRow row = sheet.getRow(i);
    34. if (row != null) {
    35. String nameString1 = row.getCell(0).getStringCellValue();
    36. String password = row.getCell(i).getStringCellValue();
    37. System.out.println("name:" + nameString1);
    38. System.out.println("password:" + password);
    39. bufferedInputStream.close();
    40. } else {
    41. bufferedInputStream.close();
    42. return;
    43. }
    44. }
    45. } catch (Exception e) {
    46. e.printStackTrace();
    47. }
    48. }
    49. }