java的poi技术读,写Excel[2003-2007,2010]

java

java的poi技术读,写Excel[2003-2007,2010]

在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作

读取excel和MySQL相关: java的poi技术读取Excel数据到MySQL 

你也可以在 : java的poi技术读取和导入Excel 了解到写入Excel的方法信息

使用JXL技术 : java的jxl技术导入Excel 

本文主要讲的是java中poi读和写excel(版本是2003-2007,2010)

项目结构:

所用到的excel

运行效果:

Processing...lib/student_info.xls

No. : 201401, name : Hongten, age : 22.0, score : 98.0

No. : 201402, name : Hanyuan, age : 21.0, score : 96.0

No. : 201403, name : Tom, age : 20.0, score : 94.0

No. : 201404, name : HanKet, age : 21.0, score : 90.0

No. : 201405, name : Jone, age : 22.0, score : 42.0

No. : 201406, name : Kite, age : 23.0, score : 59.0

No. : 201407, name : Lucy, age : 25.0, score : 60.0

No. : 201408, name : Mark, age : 23.0, score : 89.0

No. : 201409, name : Jeson, age : 24.0, score : 79.0

No. : 201410, name : Steven, age : 23.0, score : 59.0

No. : 201411, name : Tide, age : 22.0, score : 88.0

No. : 201412, name : Deli, age : 22.0, score : 89.0

No. : 201413, name : Goerme, age : 21.0, score : 98.0

No. : 201414, name : Som, age : 23.0, score : 95.0

======================================

Processing...lib/student_info.xlsx

No. : 201401, name : Hongten, age : 22.0, score : 98.0

No. : 201402, name : Hanyuan, age : 21.0, score : 96.0

No. : 201403, name : Tom, age : 20.0, score : 94.0

No. : 201404, name : HanKet, age : 21.0, score : 90.0

No. : 201405, name : Jone, age : 22.0, score : 42.0

No. : 201406, name : Kite, age : 23.0, score : 59.0

No. : 201407, name : Lucy, age : 25.0, score : 60.0

No. : 201408, name : Mark, age : 23.0, score : 89.0

No. : 201409, name : Jeson, age : 24.0, score : 79.0

No. : 201410, name : Steven, age : 23.0, score : 59.0

No. : 201411, name : Tide, age : 22.0, score : 88.0

No. : 201412, name : Deli, age : 22.0, score : 89.0

No. : 201413, name : Goerme, age : 21.0, score : 98.0

No. : 201414, name : Som, age : 23.0, score : 95.0

======================================

write data to file : lib/student_info_2003-2007.xls

write data to file : lib/student_info_2010.xlsx

======================================

Processing...lib/student_info_2003-2007.xls

No. : 201401, name : Hongten, age : 22.0, score : 98.0

No. : 201402, name : Hanyuan, age : 21.0, score : 96.0

No. : 201403, name : Tom, age : 20.0, score : 94.0

No. : 201404, name : HanKet, age : 21.0, score : 90.0

No. : 201405, name : Jone, age : 22.0, score : 42.0

No. : 201406, name : Kite, age : 23.0, score : 59.0

No. : 201407, name : Lucy, age : 25.0, score : 60.0

No. : 201408, name : Mark, age : 23.0, score : 89.0

No. : 201409, name : Jeson, age : 24.0, score : 79.0

No. : 201410, name : Steven, age : 23.0, score : 59.0

No. : 201411, name : Tide, age : 22.0, score : 88.0

No. : 201412, name : Deli, age : 22.0, score : 89.0

No. : 201413, name : Goerme, age : 21.0, score : 98.0

No. : 201414, name : Som, age : 23.0, score : 95.0

======================================

Processing...lib/student_info_2010.xlsx

No. : 201401, name : Hongten, age : 22.0, score : 98.0

No. : 201402, name : Hanyuan, age : 21.0, score : 96.0

No. : 201403, name : Tom, age : 20.0, score : 94.0

No. : 201404, name : HanKet, age : 21.0, score : 90.0

No. : 201405, name : Jone, age : 22.0, score : 42.0

No. : 201406, name : Kite, age : 23.0, score : 59.0

No. : 201407, name : Lucy, age : 25.0, score : 60.0

No. : 201408, name : Mark, age : 23.0, score : 89.0

No. : 201409, name : Jeson, age : 24.0, score : 79.0

No. : 201410, name : Steven, age : 23.0, score : 59.0

No. : 201411, name : Tide, age : 22.0, score : 88.0

No. : 201412, name : Deli, age : 22.0, score : 89.0

No. : 201413, name : Goerme, age : 21.0, score : 98.0

No. : 201414, name : Som, age : 23.0, score : 95.0

=================================================

源码部分:

=================================================

/Excel2010/src/com/b510/excel/client/Client.java

 1 /**

2 *

3 */

4 package com.b510.excel.client;

5

6 import java.util.List;

7

8 import com.b510.excel.common.Common;

9 import com.b510.excel.util.ExcelUtil;

10 import com.b510.excel.vo.Student;

11

12 /**

13 * @author Hongten

14 * @created 2014-5-21

15 */

16 public class Client {

17

18 public static void main(String[] args) throws Exception {

19 String read_excel2003_2007_path = Common.STUDENT_INFO_XLS_PATH;

20 String read_excel2010_path = Common.STUDENT_INFO_XLSX_PATH;

21 // read the 2003-2007 excel

22 List<Student> list = new ExcelUtil().readExcel(read_excel2003_2007_path);

23 if (list != null) {

24 for (Student student : list) {

25 System.out.println("No. : " + student.getNo() + ", name : " + student.getName() + ", age : " + student.getAge() + ", score : " + student.getScore());

26 }

27 }

28 System.out.println("======================================");

29 // read the 2010 excel

30 List<Student> list1 = new ExcelUtil().readExcel(read_excel2010_path);

31 if (list1 != null) {

32 for (Student student : list1) {

33 System.out.println("No. : " + student.getNo() + ", name : " + student.getName() + ", age : " + student.getAge() + ", score : " + student.getScore());

34 }

35 }

36 System.out.println("======================================");

37 String write_excel2003_2007_path = Common.STUDENT_INFO_XLS_OUT_PATH;

38 String write_excel2010_path = Common.STUDENT_INFO_XLSX_OUT_PATH;

39 new ExcelUtil().writeExcel(list, write_excel2003_2007_path);

40 new ExcelUtil().writeExcel(list, write_excel2010_path);

41 System.out.println("======================================");

42

43 // read the 2003-2007 excel

44 List<Student> list2 = new ExcelUtil().readExcel(write_excel2003_2007_path);

45 if (list != null) {

46 for (Student student : list2) {

47 System.out.println("No. : " + student.getNo() + ", name : " + student.getName() + ", age : " + student.getAge() + ", score : " + student.getScore());

48 }

49 }

50 System.out.println("======================================");

51 // read the 2010 excel

52 List<Student> list3 = new ExcelUtil().readExcel(write_excel2010_path);

53 if (list1 != null) {

54 for (Student student : list3) {

55 System.out.println("No. : " + student.getNo() + ", name : " + student.getName() + ", age : " + student.getAge() + ", score : " + student.getScore());

56 }

57 }

58 }

59 }

/Excel2010/src/com/b510/excel/common/Common.java

 1 /**

2 *

3 */

4 package com.b510.excel.common;

5

6 /**

7 * @author Hongten

8 * @created 2014-5-21

9 */

10 public class Common {

11

12 public static final String OFFICE_EXCEL_2003_POSTFIX = "xls";

13 public static final String OFFICE_EXCEL_2010_POSTFIX = "xlsx";

14

15 public static final String EMPTY = "";

16 public static final String POINT = ".";

17 public static final String LIB_PATH = "lib";

18 public static final String STUDENT_INFO_XLS_PATH = LIB_PATH + "/student_info" + POINT + OFFICE_EXCEL_2003_POSTFIX;

19 public static final String STUDENT_INFO_XLSX_PATH = LIB_PATH + "/student_info" + POINT + OFFICE_EXCEL_2010_POSTFIX;

20 public static final String STUDENT_INFO_XLS_OUT_PATH = "lib/student_info_2003-2007.xls";

21 public static final String STUDENT_INFO_XLSX_OUT_PATH = "lib/student_info_2010.xlsx";

22 public static final String NOT_EXCEL_FILE = " : Not the Excel file!";

23 public static final String PROCESSING = "Processing...";

24 public static final String WRITE_DATA = "write data to file : ";

25

26 }

/Excel2010/src/com/b510/excel/util/ExcelUtil.java

  1 /**

2 *

3 */

4 package com.b510.excel.util;

5

6 import java.io.File;

7 import java.io.FileInputStream;

8 import java.io.FileOutputStream;

9 import java.io.IOException;

10 import java.io.InputStream;

11 import java.io.OutputStream;

12 import java.util.ArrayList;

13 import java.util.List;

14

15 import org.apache.poi.hssf.usermodel.HSSFCell;

16 import org.apache.poi.hssf.usermodel.HSSFRichTextString;

17 import org.apache.poi.hssf.usermodel.HSSFRow;

18 import org.apache.poi.hssf.usermodel.HSSFSheet;

19 import org.apache.poi.hssf.usermodel.HSSFWorkbook;

20 import org.apache.poi.xssf.usermodel.XSSFCell;

21 import org.apache.poi.xssf.usermodel.XSSFRichTextString;

22 import org.apache.poi.xssf.usermodel.XSSFRow;

23 import org.apache.poi.xssf.usermodel.XSSFSheet;

24 import org.apache.poi.xssf.usermodel.XSSFWorkbook;

25

26 import com.b510.excel.common.Common;

27 import com.b510.excel.vo.Student;

28

29 /**

30 * @author Hongten

31 * @created 2014-5-20

32 */

33 public class ExcelUtil {

34

35 public void writeExcel(List<Student> list, String path) throws Exception {

36 if (list == null) {

37 return;

38 } else if (path == null || Common.EMPTY.equals(path)) {

39 return;

40 } else {

41 String postfix = Util.getPostfix(path);

42 if (!Common.EMPTY.equals(postfix)) {

43 if (Common.OFFICE_EXCEL_2003_POSTFIX.equals(postfix)) {

44 writeXls(list, path);

45 } else if (Common.OFFICE_EXCEL_2010_POSTFIX.equals(postfix)) {

46 writeXlsx(list, path);

47 }

48 }else{

49 System.out.println(path + Common.NOT_EXCEL_FILE);

50 }

51 }

52 }

53

54 /**

55 * read the Excel file

56 * @param path the path of the Excel file

57 * @return

58 * @throws IOException

59 */

60 public List<Student> readExcel(String path) throws IOException {

61 if (path == null || Common.EMPTY.equals(path)) {

62 return null;

63 } else {

64 String postfix = Util.getPostfix(path);

65 if (!Common.EMPTY.equals(postfix)) {

66 if (Common.OFFICE_EXCEL_2003_POSTFIX.equals(postfix)) {

67 return readXls(path);

68 } else if (Common.OFFICE_EXCEL_2010_POSTFIX.equals(postfix)) {

69 return readXlsx(path);

70 }

71 } else {

72 System.out.println(path + Common.NOT_EXCEL_FILE);

73 }

74 }

75 return null;

76 }

77

78 /**

79 * Read the Excel 2010

80 * @param path the path of the excel file

81 * @return

82 * @throws IOException

83 */

84 public List<Student> readXlsx(String path) throws IOException {

85 System.out.println(Common.PROCESSING + path);

86 InputStream is = new FileInputStream(path);

87 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);

88 Student student = null;

89 List<Student> list = new ArrayList<Student>();

90 // Read the Sheet

91 for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {

92 XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);

93 if (xssfSheet == null) {

94 continue;

95 }

96 // Read the Row

97 for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {

98 XSSFRow xssfRow = xssfSheet.getRow(rowNum);

99 if (xssfRow != null) {

100 student = new Student();

101 XSSFCell no = xssfRow.getCell(0);

102 XSSFCell name = xssfRow.getCell(1);

103 XSSFCell age = xssfRow.getCell(2);

104 XSSFCell score = xssfRow.getCell(3);

105 student.setNo(getValue(no));

106 student.setName(getValue(name));

107 student.setAge(getValue(age));

108 student.setScore(Float.valueOf(getValue(score)));

109 list.add(student);

110 }

111 }

112 }

113 return list;

114 }

115

116 /**

117 * Read the Excel 2003-2007

118 * @param path the path of the Excel

119 * @return

120 * @throws IOException

121 */

122 public List<Student> readXls(String path) throws IOException {

123 System.out.println(Common.PROCESSING + path);

124 InputStream is = new FileInputStream(path);

125 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);

126 Student student = null;

127 List<Student> list = new ArrayList<Student>();

128 // Read the Sheet

129 for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {

130 HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);

131 if (hssfSheet == null) {

132 continue;

133 }

134 // Read the Row

135 for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {

136 HSSFRow hssfRow = hssfSheet.getRow(rowNum);

137 if (hssfRow != null) {

138 student = new Student();

139 HSSFCell no = hssfRow.getCell(0);

140 HSSFCell name = hssfRow.getCell(1);

141 HSSFCell age = hssfRow.getCell(2);

142 HSSFCell score = hssfRow.getCell(3);

143 student.setNo(getValue(no));

144 student.setName(getValue(name));

145 student.setAge(getValue(age));

146 student.setScore(Float.valueOf(getValue(score)));

147 list.add(student);

148 }

149 }

150 }

151 return list;

152 }

153

154 @SuppressWarnings("static-access")

155 private String getValue(XSSFCell xssfRow) {

156 if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) {

157 return String.valueOf(xssfRow.getBooleanCellValue());

158 } else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) {

159 return String.valueOf(xssfRow.getNumericCellValue());

160 } else {

161 return String.valueOf(xssfRow.getStringCellValue());

162 }

163 }

164

165 @SuppressWarnings("static-access")

166 private String getValue(HSSFCell hssfCell) {

167 if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {

168 return String.valueOf(hssfCell.getBooleanCellValue());

169 } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {

170 return String.valueOf(hssfCell.getNumericCellValue());

171 } else {

172 return String.valueOf(hssfCell.getStringCellValue());

173 }

174 }

175

176 public void writeXls(List<Student> list, String path) throws Exception {

177 if (list == null) {

178 return;

179 }

180 int countColumnNum = list.size();

181 HSSFWorkbook book = new HSSFWorkbook();

182 HSSFSheet sheet = book.createSheet("studentSheet");

183 // option at first row.

184 HSSFRow firstRow = sheet.createRow(0);

185 HSSFCell[] firstCells = new HSSFCell[countColumnNum];

186 String[] options = { "no", "name", "age", "score" };

187 for (int j = 0; j < options.length; j++) {

188 firstCells[j] = firstRow.createCell(j);

189 firstCells[j].setCellValue(new HSSFRichTextString(options[j]));

190 }

191 //

192 for (int i = 0; i < countColumnNum; i++) {

193 HSSFRow row = sheet.createRow(i + 1);

194 Student student = list.get(i);

195 for (int column = 0; column < options.length; column++) {

196 HSSFCell no = row.createCell(0);

197 HSSFCell name = row.createCell(1);

198 HSSFCell age = row.createCell(2);

199 HSSFCell score = row.createCell(3);

200 no.setCellValue(student.getNo());

201 name.setCellValue(student.getName());

202 age.setCellValue(student.getAge());

203 score.setCellValue(student.getScore());

204 }

205 }

206 File file = new File(path);

207 OutputStream os = new FileOutputStream(file);

208 System.out.println(Common.WRITE_DATA + path);

209 book.write(os);

210 os.close();

211 }

212

213 public void writeXlsx(List<Student> list, String path) throws Exception {

214 if (list == null) {

215 return;

216 }

217 //XSSFWorkbook

218 int countColumnNum = list.size();

219 XSSFWorkbook book = new XSSFWorkbook();

220 XSSFSheet sheet = book.createSheet("studentSheet");

221 // option at first row.

222 XSSFRow firstRow = sheet.createRow(0);

223 XSSFCell[] firstCells = new XSSFCell[countColumnNum];

224 String[] options = { "no", "name", "age", "score" };

225 for (int j = 0; j < options.length; j++) {

226 firstCells[j] = firstRow.createCell(j);

227 firstCells[j].setCellValue(new XSSFRichTextString(options[j]));

228 }

229 //

230 for (int i = 0; i < countColumnNum; i++) {

231 XSSFRow row = sheet.createRow(i + 1);

232 Student student = list.get(i);

233 for (int column = 0; column < options.length; column++) {

234 XSSFCell no = row.createCell(0);

235 XSSFCell name = row.createCell(1);

236 XSSFCell age = row.createCell(2);

237 XSSFCell score = row.createCell(3);

238 no.setCellValue(student.getNo());

239 name.setCellValue(student.getName());

240 age.setCellValue(student.getAge());

241 score.setCellValue(student.getScore());

242 }

243 }

244 File file = new File(path);

245 OutputStream os = new FileOutputStream(file);

246 System.out.println(Common.WRITE_DATA + path);

247 book.write(os);

248 os.close();

249 }

250 }

/Excel2010/src/com/b510/excel/util/Util.java

 1 /**

2 *

3 */

4 package com.b510.excel.util;

5

6 import com.b510.excel.common.Common;

7

8 /**

9 * @author Hongten

10 * @created 2014-5-21

11 */

12 public class Util {

13

14 /**

15 * get postfix of the path

16 * @param path

17 * @return

18 */

19 public static String getPostfix(String path) {

20 if (path == null || Common.EMPTY.equals(path.trim())) {

21 return Common.EMPTY;

22 }

23 if (path.contains(Common.POINT)) {

24 return path.substring(path.lastIndexOf(Common.POINT) + 1, path.length());

25 }

26 return Common.EMPTY;

27 }

28 }

/Excel2010/src/com/b510/excel/vo/Student.java

 1 /**

2 *

3 */

4 package com.b510.excel.vo;

5

6 /**

7 * Student

8 *

9 * @author Hongten

10 * @created 2014-5-18

11 */

12 public class Student {

13 /**

14 * id

15 */

16 private Integer id;

17 /**

18 * 学号

19 */

20 private String no;

21 /**

22 * 姓名

23 */

24 private String name;

25 /**

26 * 学院

27 */

28 private String age;

29 /**

30 * 成绩

31 */

32 private float score;

33

34 public Integer getId() {

35 return id;

36 }

37

38 public void setId(Integer id) {

39 this.id = id;

40 }

41

42 public String getNo() {

43 return no;

44 }

45

46 public void setNo(String no) {

47 this.no = no;

48 }

49

50 public String getName() {

51 return name;

52 }

53

54 public void setName(String name) {

55 this.name = name;

56 }

57

58 public String getAge() {

59 return age;

60 }

61

62 public void setAge(String age) {

63 this.age = age;

64 }

65

66 public float getScore() {

67 return score;

68 }

69

70 public void setScore(float score) {

71 this.score = score;

72 }

73

74 }

源码下载:http://pan.baidu.com/s/1eQpEf0u

 

 

========================================================

 

More reading,and english is important.

 

I\'m Hongten

 

 

 

大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。
Hongten博客排名在100名以内。粉丝过千。
Hongten出品,必是精品。

 

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

 

========================================================

 

以上是 java的poi技术读,写Excel[2003-2007,2010] 的全部内容, 来源链接: utcz.com/z/391103.html

回到顶部