Java实现读取及生成Excel文件的方法
程序员文章站
2023-12-14 22:32:52
本文实例讲述了java实现读取及生成excel文件的方法。分享给大家供大家参考,具体如下:
一、读取excel文件
需要先下载poi-3.0.1-final-20070...
本文实例讲述了java实现读取及生成excel文件的方法。分享给大家供大家参考,具体如下:
一、读取excel文件
需要先下载poi-3.0.1-final-20070705.jar(点击此处本站下载poi-3.0.1-final-20070705.jar。)
excelexamread.java
import java.io.file; import java.io.fileinputstream; import java.io.ioexception; import org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.usermodel.hssfrow; import org.apache.poi.hssf.usermodel.hssfsheet; import org.apache.poi.hssf.usermodel.hssfworkbook; public class excelexamread { /** 读excel文件内容 */ public void showexcel(string excelname) { file file = new file(excelname); fileinputstream in = null; try { // 创建对excel工作簿文件的引用 in = new fileinputstream(file); hssfworkbook hwb = new hssfworkbook(in); hssfsheet sheet = hwb.getsheet("myfirstexcel");// 根据指定的名字来引用此excel中的有效工作表 // 读取excel 工作表的数据 system.out.println("下面是excel文件" + file.getabsolutepath() + "的内容:"); hssfrow row = null; hssfcell cell = null; int rownum = 0; // 行标 int colnum = 0; // 列标 for (; rownum < 9; rownum++) { // 获取第rownum行 row = sheet.getrow((short) rownum); for (colnum = 0; colnum < 5; colnum++) { cell = row.getcell((short) colnum);// 根据当前行的位置来创建一个单元格对象 system.out.print(cell.getstringcellvalue() + "\t");// 获取当前单元格中的内容 } system.out.println(); // 换行 } in.close(); } catch (exception e) { system.out .println("读取excel文件" + file.getabsolutepath() + "失败:" + e); } finally { if (in != null) { try { in.close(); } catch (ioexception e1) { } } } } public static void main(string[] args) { excelexamread excel = new excelexamread(); string excelname = "d:/excelexamread.xls"; excel.showexcel(excelname); } }
二、生成excel文件
excelexamwrite.java:
import java.io.file; import java.io.fileoutputstream; import java.io.ioexception; import org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.usermodel.hssfcellstyle; import org.apache.poi.hssf.usermodel.hssffont; 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.hssf.util.region; //创建excel文件 public class excelexamwrite { // 新建一个excel文件,里面添加5行5列的内容,另外添加一个合并2行5列的大单元格以及一个合并2行1列的5个合并单元格。 public void createexcel(string filename) { file file = new file(filename);// 创建excel文件对象 fileoutputstream fout = null; try { // 创建一个新的hssfworkbook对象 hssfworkbook workbook = new hssfworkbook(); // 创建一个excel的工作表,可以指定工作表的名字 hssfsheet sheet = workbook.createsheet("myfirstexcel"); // 创建字体,红色、粗体 hssffont font = workbook.createfont(); font.setcolor(hssffont.color_red); font.setboldweight(hssffont.boldweight_bold); hssffont font1 = workbook.createfont(); // 创建字体,黑色、非粗体 font1.setcolor(hssffont.color_normal); font1.setboldweight(hssffont.boldweight_normal); // 创建单元格的格式,如居中、左对齐等 hssfcellstyle cellstyle = workbook.createcellstyle(); cellstyle.setalignment(hssfcellstyle.align_center); // 水平方向上居中对齐 // 垂直方向上居中对齐 cellstyle.setverticalalignment(hssfcellstyle.vertical_center); cellstyle.setfont(font); // 设置字体 hssfcellstyle cellstyle1 = workbook.createcellstyle(); cellstyle1.setalignment(hssfcellstyle.align_left); cellstyle1.setfont(font1); // 下面将建立一个4行3列的表。第一行为表头。 int rownum = 0;// 行标 int colnum = 0;// 列标 // 建立表头信息 hssfrow row = sheet.createrow((short) rownum); // 在索引0的位置创建行 hssfcell cell = null; // 单元格 for (colnum = 0; colnum < 5; colnum++) { // 在当前行的colnum列上创建单元格 cell = row.createcell((short) colnum); // 定义单元格为字符类型,也可以指定为日期类型、数字类型 cell.setcelltype(hssfcell.cell_type_string); // 定义编码方式,为了支持中文,这里使用了encoding_utf_16 cell.setencoding(hssfcell.encoding_utf_16); cell.setcellstyle(cellstyle); // 为单元格设置格式 cell.setcellvalue("表头-第" + (colnum + 1) + "列"); // 添加内容至单元格 } rownum++; for (; rownum < 5; rownum++) { // 新建第rownum行 row = sheet.createrow((short) rownum); for (colnum = 0; colnum < 5; colnum++) { // 在当前行的colnum位置创建单元格 cell = row.createcell((short) colnum); cell.setencoding(hssfcell.encoding_utf_16); cell.setcellstyle(cellstyle1); cell.setcellvalue("表体-第" + rownum + "行第" + (colnum + 1) + "列"); } } // 合并单元格 // 先创建2行5列的单元格,然后将这些单元格合并为2个大单元格 rownum = 5; for (; rownum < 9; rownum++) { row = sheet.createrow((short) rownum); for (colnum = 0; colnum < 5; colnum++) { // 在当前行的colnum位置创建单元格 cell = row.createcell((short) colnum); } } // 建立第一个大单元格,高度为2,宽度为2 rownum = 5; colnum = 0; region region = new region(rownum, (short) colnum, (rownum + 1), (short) (colnum + 4)); sheet.addmergedregion(region); // 获得第一个大单元格 cell = sheet.getrow(rownum).getcell((short) colnum); cell.setencoding(hssfcell.encoding_utf_16); cell.setcellstyle(cellstyle); cell.setcellvalue("合并行单元格"); // 建立第二个大单元格,高度为2,宽度为3 rownum = 7; for (colnum = 0; colnum < 5; colnum++) { region = new region(rownum, (short) colnum, (rownum + 1), (short) (colnum)); sheet.addmergedregion(region); // 获得第二个大单元格 cell = sheet.getrow(rownum).getcell((short) colnum); cell.setencoding(hssfcell.encoding_utf_16); cell.setcellstyle(cellstyle); cell.setcellvalue("合并列单元格"); } // 新建一输出文件流 fout = new fileoutputstream(file); // 将创建的内容写到指定的excel文件中 workbook.write(fout); fout.flush(); fout.close();// 操作结束,关闭文件 system.out.println("excel文件创建成功!\nexcel文件的存放路径为:" + file.getabsolutepath()); } catch (exception e) { system.out.println("excel文件" + file.getabsolutepath() + "创建失败\n其原因为:" + e); } finally { if (fout != null) { try { fout.close(); } catch (ioexception e1) { } } } } public static void main(string[] args) throws exception { excelexamwrite excel = new excelexamwrite(); string filename = "e:/excelexamwrite.xls"; excel.createexcel(filename); } }
更多关于java相关内容感兴趣的读者可查看本站专题:《java操作excel技巧总结》、《java+mysql数据库程序设计总结》、《java数据结构与算法教程》、《java文件与目录操作技巧汇总》及《java操作dom节点技巧总结》
希望本文所述对大家java程序设计有所帮助。