【Eclipse表格读写问题】利用jxl包进行Excel的读写

简介: 【Eclipse表格读写问题】利用jxl包进行Excel的读写

先看源码

1. package readExcel;
2. 
3. import java.io.FileInputStream;
4. import java.io.InputStream;
5. import java.util.ArrayList;
6. import java.util.Hashtable;
7. 
8. import jxl.Cell;
9. import jxl.Sheet;
10. import jxl.Workbook;
11. 
12. import java.io.File;
13. import jxl.write.Label;
14. import jxl.write.WritableSheet;
15. import jxl.write.WritableWorkbook;
16. 
17. 
18. public class ReadExcel {
19.   public static void main(String[] args) {
20.     try {
21.       // 1、构造excel文件输入流对象
22. //这里的路径要换掉,换成自己的表格名字
23.       String Path = "Example/NeedRead/BMUS.xls";
24.       InputStream is = new FileInputStream(Path);
25.       // 2、声明工作簿对象
26.       Workbook rwb = Workbook.getWorkbook(is);
27. 
28.       // 3、获得工作簿的个数,对应于一个excel中的工作表个数
29.       rwb.getNumberOfSheets();
30. 
31.       // 获取excel中所有的表
32.       // Sheet[] sheets = rwb.getSheets();
33.       // 获取表的个数
34.       // Integer pages = sheets.length;
35.       // 获取对应表,i为循环
36.       // Sheet sheet = sheets[i];
37. 
38.       // 使用索引形式获取第一个工作表。
39.       // Sheet oFirstSheet = rwb.getSheet(0);//
40. 
41.       // 也可以使用rwb.getSheet(sheetName);其中sheetName表示的是工作表的名称
42.       Sheet oFirstSheet = rwb.getSheet("第一个表");
43. 
44.       // System.out.println("工作表名称:" + oFirstSheet.getName());
45.       int rows = oFirstSheet.getRows();// 获取工作表中的总行数
46.       int columns = oFirstSheet.getColumns();// 获取工作表中的总列数
47. 
48.       System.out.println("*****输出第一个表的总行数*****" + rows);
49.       System.out.println("*****输出第一个表的总列数*****" + columns);
50. 
51.       /**
52.        * 按照每一列读取数据,将一列中的数据存入数组
53.        *
54.        */
55. 
56.       // 用于读取直接从表中读取的数据
57.       Hashtable<Integer, ArrayList<String>> dataStr = new Hashtable<>();
58. 
59.       // 列的循环
60.       for (int i = 0; i < columns; i++) {
61. 
62.         // 将列中的数据存入此处,由于不能确定每一列中的具体行数,先使用ArrayList
63.         // 此处需注意的是已经确认了每一列中的数据是连续的,没有相隔一行或几行的数据
64.         ArrayList<String> cdata = new ArrayList<String>();
65. 
66.         // 行的循环,从第一个一直读取到整个表的最大行数,当遇到空值时跳出循环
67.         for (int j = 0; j < rows; j++) {
68. 
69.           // 将表中一个方格中的“东西”转换为Cell这个类,这个类也只有一个值
70.           // 需要注意的是这里的getCell方法的参数,第一个是指定第几列,第二个参数才是指定第几行
71.           // System.out.println("这个是i列 "+i+" 这个是j行 "+j);
72.           Cell oCell = oFirstSheet.getCell(i, j);
73. 
74.           // 将Cell类型的数据转换为String类型的数据。Cell只提供转换成String的方法,无法直接转换成Double、int数据
75.           String oCellStr = oCell.getContents();
76. 
77.           // System.out.println("这个是每一框中的数据 " +oCellStr);
78. 
79.           // 如果有数据,则存入数据,如果没有,则跳出这个循环
80.           if (oCellStr != "") {
81.             cdata.add(oCellStr);
82.           } else {
83.             // System.out.println("---------------------------这个是空值了-----------------------");
84.             break;
85.           }
86. 
87.         }
88. 
89.         // 存入每一列的数据
90.         dataStr.put(i, cdata);
91. 
92.       }
93. 
94.       /**
95.        * 进行简单的操作,即把每一个值加上50
96.        */
97.       // 用于存储经过运算之后的值
98.       Hashtable<Integer, ArrayList<Integer>> dataInt = new Hashtable<>();
99. 
100.      // 列的循环
101.      for (int i = 0; i < dataStr.size(); i++) {
102. 
103.        // 用于存储每一列的值
104.        ArrayList<Integer> cDataInt = new ArrayList<>();
105.        // 行的循环
106.        for (int j = 0; j < dataStr.get(i).size(); j++) {
107.          // 每一个方框中的值,此处读取为字符串类型
108.          String daStr = dataStr.get(i).get(j);
109.          // 将String转换为Integer类型
110.          int daInt = Integer.parseInt(daStr);
111. 
112.          // 加上50
113.          daInt += 50;
114.          // 存入这一列的数据中
115.          cDataInt.add(daInt);
116.        }
117.        // 将这一列存入总数据中
118.        dataInt.put(i, cDataInt);
119.      }
120. 
121.      /**
122.       * 写入新的Excel表
123.       *
124.       *
125.       * */
126.      /* 把Excel表输出的位置 */
127.      String targetpath = "Example/NeedRead/oneCopy.xls";
128. 
129. 
130.      // 1、创建工作簿(WritableWorkbook)对象,打开excel文件,若文件不存在,则创建文件,但注意必须保证文件夹存在,此处无法创建新文件夹
131.      WritableWorkbook writeBook = Workbook.createWorkbook(new File(targetpath));
132.      // 2、新建工作表(sheet)对象,并声明其属于第几页
133.      WritableSheet firstSheet = writeBook.createSheet("第一种复制的表", 0);// 第一个参数为工作簿的名称,第二个参数为页数
134.      // WritableSheet secondSheet = writeBook.createSheet("第二个工作簿", 0);
135. 
136.      /**
137.       * 循环输出
138.       */
139. 
140.      // 列的循环
141.      for (int i = 0; i < dataInt.size(); i++) {
142. 
143.        // 行的循环
144.        for (int j = 0; j < dataInt.get(i).size(); j++) {
145. 
146.          // 每一个方框中的值,此处读取为Integer
147.          int data = dataInt.get(i).get(j);
148. 
149.          // 3、创建单元格(Label)对象
150.          // 第一个参数指定单元格的列数、第二个参数指定单元格的行数,第三个指定写的字符串内容
151.          Label label = new Label(i, j, String.valueOf(data));
152.          // 写入数据
153.          firstSheet.addCell(label);
154. 
155.        }
156. 
157.      }
158.      // 4、打开流,开始写文件
159.      writeBook.write();
160.      //关闭读取和写入的工作流
161.      is.close();
162.      writeBook.close();
163.    } catch (Exception e) {
164.      e.printStackTrace();
165. 
166.    }
167. 
168.    System.out.println("程序运行结束");
169.  }
170. }

记住一定要把jxl包放在lib列表下

然后右键jxl包,Build Path》》》Configure Build Path,把jxl包添加一下

添加之后就会出现这个

如果代码出现

1. at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
2.  at jxl.read.biff.File.<init>(File.java:127)
3.  at jxl.Workbook.getWorkbook(Workbook.java:268)
4.  at jxl.Workbook.getWorkbook(Workbook.java:253)
5.  at readExcel.ReadExcel.main(ReadExcel.java:25)

那是因为你的Excel表格

1:版本问题,现在jxl包好像只能弄03的还是哪个来着

2:表格出现错误

3:后缀名一定是xls,不能是xlsx。

相关文章
|
2月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
173 5
|
2月前
|
Java Android开发
Eclipse 创建 Java 包
Eclipse 创建 Java 包
40 1
|
2月前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
103 2
|
3月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
172 6
|
3月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
74 2
|
3月前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
274 0
|
3月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
117 0
|
3月前
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
127 0
对excel读写的三个模块,xlsxwriter最牛,xlwt , xlrd,openpyxl
对excel读写的三个模块,xlsxwriter最牛,xlwt , xlrd,openpyxl
|
5月前
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件
83 1

推荐镜像

更多