java读取excel插件_利用poi插件,把Excel内容读入Java,把Java中的内容输出到Exce

1 1、首先在Java头引入Poi插件。2

3 packagepoiExcel;4

5 //输入输出到文件必备

6 import java.io.*;7

8 import org.apache.poi.hssf.usermodel.*;9 import org.apache.poi.hssf.util.*;10 import org.apache.poi.poifs.filesystem.*;11 2、先是把C:\1.xls的内容读取到Java里面来,逐个单元格输出12 public static void ExcelRead() throwsException {13 //确定要操作的是c:/1.xls

14 HSSFWorkbook workbook = new HSSFWorkbook(newPOIFSFileSystem(15 new FileInputStream("c:/1.xls")));16 //取第0个单元表

17 HSSFSheet sheet = workbook.getSheetAt(0);18 //sheet.getPhysicalNumberOfRows();求出所有行数

19 for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {20 //取一行操作

21 HSSFRow row =sheet.getRow(i);22 //row.getPhysicalNumberOfCells();求出本行的单元格数,也就是列数

23 for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {24 System.out.print(row.getCell(j) + "\t");25 }26 System.out.println();27 }28 }29 3、之后是在Java设置好整个单元格的样式,输出到Excel中。整个过程有点像JavaScript操作HTML的DOM节点。先构造单元格、再通过单元格构造行、最后通过行构造整张表,再把整张表输出的过程。30 public static voidExcelWrite() {31

32 //创建一个webbook,对应一个Excel文件

33 HSSFWorkbook workbook = newHSSFWorkbook();34 //在webbook中添加一个Excel单元表sheet,并设置单元表的问题

35 HSSFSheet sheet = workbook.createSheet("单元表标题");36

37 //在sheet中添加第0行,注意老版本poi对Excel的行数列数是有限制

38 HSSFRow row = sheet.createRow(0);39 //创建一个居中样式

40 HSSFCellStyle style =workbook.createCellStyle();41 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);42 //在于这个居中样式的基础上,添加表格边框样式

43 setBoderStyle(style);44 //创建第0个单元格

45 HSSFCell cell = row.createCell(0);46 //设置这个单元格的内容为“一”

47 cell.setCellValue("一");48 //设置这个单元格的格式为上面设置好的居中样式+表格边框样式

49 cell.setCellStyle(style);50 //同理创建第1个单元格并且设置好样式,下面以此类推

51 cell = row.createCell(1);52 cell.setCellValue("二");53 cell.setCellStyle(style);54 cell = row.createCell(2);55 cell.setCellValue("三");56 cell.setCellStyle(style);57

58 //创建第1行

59 row = sheet.createRow(1);60 //清空上面设置好的居中样式+表格边框样式

61 style =workbook.createCellStyle();62 //设置字体样式

63 setFontStyle(workbook, style);64 cell = row.createCell(0);65 cell.setCellValue("111");66 cell.setCellStyle(style);67 cell = row.createCell(1);68 cell.setCellValue("222");69 cell.setCellStyle(style);70 cell = row.createCell(2);71 cell.setCellValue("333");72 cell.setCellStyle(style);73 //自动调整列宽

74 allColumnAutoSize(sheet);75

76 //将文件存到指定位置

77 try{78 //false代表覆盖输出

79 FileOutputStream fileOutputStream = newFileOutputStream(80 "c:/1.xls", false);81 workbook.write(fileOutputStream);82 //人走带门

83 fileOutputStream.close();84 workbook.close();85 } catch(Exception e) {86 e.printStackTrace();87 }88

89 }90 其中,涉及到设置边框样式的方法如下:91 public static voidsetBoderStyle(HSSFCellStyle style) {92 style.setBorderTop((short) 6); //上边框为双线

93 style.setBorderRight((short) 3); //右边框为虚线

94 style.setBorderBottom((short) 1); //底边框为单线

95 style.setBottomBorderColor(HSSFColor.RED.index);//底边框为红色

96 }97 设置单元格字体的方法如下:98 public static voidsetFontStyle(HSSFWorkbook workbook, HSSFCellStyle style) {99 HSSFFont font = workbook.createFont();//要设置字体样式先要创建字体

100 font.setFontHeightInPoints((short) 16);//字号

101 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗

102 font.setItalic(true);//斜体

103 font.setColor(HSSFColor.RED.index);//字体颜色是红色

104 style.setFont(font); //把这个设置好的字体样色压入样式

105 }106 自动调整列宽的方法如下:107

108 public static voidallColumnAutoSize(HSSFSheet sheet) {109 //遍历所有单元格,把单元格皆设置为最优列宽。

110 for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {111 HSSFRow row =sheet.getRow(i);112 for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {113 sheet.autoSizeColumn(j);114 }115 }116 }117

118

119 4.总结120

121 最后整个Java文件如下,主函数就两个方法,一个EXCEL到JAVA,一个JAVA到EXCEL。实际应用这个插件,创建单元格完全可以利用for与while等循环,从一个ArrayList读取数据,不停地填充单元格。122

123 packagepoiExcel;124

125 //输入输出到文件必备

126 import java.io.*;127

128 import org.apache.poi.hssf.usermodel.*;129 import org.apache.poi.hssf.util.*;130 import org.apache.poi.poifs.filesystem.*;131

132 public classpoiTest {133

134 public static void ExcelRead() throwsException {135 //确定要操作的是c:/1.xls

136 HSSFWorkbook workbook = new HSSFWorkbook(newPOIFSFileSystem(137 new FileInputStream("c:/1.xls")));138 //取第0个单元表

139 HSSFSheet sheet = workbook.getSheetAt(0);140 //sheet.getPhysicalNumberOfRows();求出所有行数

141 for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {142 //取一行操作

143 HSSFRow row =sheet.getRow(i);144 //row.getPhysicalNumberOfCells();求出本行的单元格数,也就是列数

145 for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {146 System.out.print(row.getCell(j) + "\t");147 }148 System.out.println();149 }150 }151

152 public static voidsetBoderStyle(HSSFCellStyle style) {153 style.setBorderTop((short) 6); //上边框为双线

154 style.setBorderRight((short) 3); //右边框为虚线

155 style.setBorderBottom((short) 1); //底边框为单线

156 style.setBottomBorderColor(HSSFColor.RED.index);//底边框为红色

157 }158

159 public static voidsetFontStyle(HSSFWorkbook workbook, HSSFCellStyle style) {160 HSSFFont font = workbook.createFont();//要设置字体样式先要创建字体

161 font.setFontHeightInPoints((short) 16);//字号

162 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗

163 font.setItalic(true);//斜体

164 font.setColor(HSSFColor.RED.index);//字体颜色是红色

165 style.setFont(font); //把这个设置好的字体样色压入样式

166 }167

168 public static voidallColumnAutoSize(HSSFSheet sheet) {169 //遍历所有单元格,把单元格皆设置为最优列宽。

170 for (int i = 0; i < sheet.getPhysicalNumberOfRows(); i++) {171 HSSFRow row =sheet.getRow(i);172 for (int j = 0; j < row.getPhysicalNumberOfCells(); j++) {173 sheet.autoSizeColumn(j);174 }175 }176 }177

178 public static voidExcelWrite() {179

180 //创建一个webbook,对应一个Excel文件

181 HSSFWorkbook workbook = newHSSFWorkbook();182 //在webbook中添加一个Excel单元表sheet,并设置单元表的问题

183 HSSFSheet sheet = workbook.createSheet("单元表标题");184

185 //在sheet中添加第0行,注意老版本poi对Excel的行数列数是有限制

186 HSSFRow row = sheet.createRow(0);187 //创建一个居中样式

188 HSSFCellStyle style =workbook.createCellStyle();189 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);190 //在于这个居中样式的基础上,添加表格边框样式

191 setBoderStyle(style);192 //创建第0个单元格

193 HSSFCell cell = row.createCell(0);194 //设置这个单元格的内容为“一”

195 cell.setCellValue("一");196 //设置这个单元格的格式为上面设置好的居中样式+表格边框样式

197 cell.setCellStyle(style);198 //同理创建第1个单元格并且设置好样式,下面以此类推

199 cell = row.createCell(1);200 cell.setCellValue("二");201 cell.setCellStyle(style);202 cell = row.createCell(2);203 cell.setCellValue("三");204 cell.setCellStyle(style);205

206 //创建第1行

207 row = sheet.createRow(1);208 //清空上面设置好的居中样式+表格边框样式

209 style =workbook.createCellStyle();210 //设置字体样式

211 setFontStyle(workbook, style);212 cell = row.createCell(0);213 cell.setCellValue("111");214 cell.setCellStyle(style);215 cell = row.createCell(1);216 cell.setCellValue("222");217 cell.setCellStyle(style);218 cell = row.createCell(2);219 cell.setCellValue("333");220 cell.setCellStyle(style);221 //自动调整列宽

222 allColumnAutoSize(sheet);223

224 //将文件存到指定位置

225 try{226 //false代表覆盖输出

227 FileOutputStream fileOutputStream = newFileOutputStream(228 "c:/1.xls", false);229 workbook.write(fileOutputStream);230 //人走带门

231 fileOutputStream.close();232 workbook.close();233 } catch(Exception e) {234 e.printStackTrace();235 }236

237 }238

239 public static void main(String[] args) throwsException {240 ExcelRead();241 ExcelWrite();242 }243

244 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值