java生成Excel两种方式

方法一,利用第三方jar包:jxl.jar

无论方法一方法二最后最好用转换成流传给前端。

 1 public void createExcel(){
 2         try{
 3             //打开文件
 4             WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls"));
 5             //生成名为“第一页”的工作表,参数0表示这是第一页
 6             WritableSheet sheet = workbook.createSheet("第一页", 0);
 7             //在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
 8             //以及单元格内容为test
 9             Label label = new Label(0,0,"test");
10             //将定义好的单元格添加到工作表中
11             sheet.addCell(label);
12             /*生成一个保存数字的单元格   
13              * 必须使用Number的完整包路径,否则有语法歧义   
14              * 单元格位置是第二列,第一行,值为789.123*/
15             jxl.write.Number number = new jxl.write.Number(1,0,756);
16
17             sheet.addCell(number);
18
19             sheet.insertColumn(1);
20
21             workbook.copySheet(0, "第二页", 1);
22
23             WritableSheet sheet2 = workbook.getSheet(1);
24             Range range = sheet2.mergeCells(0, 0, 0, 8);
25             sheet2.unmergeCells(range);
26
27             sheet2.addImage(new WritableImage(5, 5, 10, 20, new File("F:\\09.png")));
28
29
30             CellView cv = new CellView();
31
32             WritableCellFormat cf = new WritableCellFormat();
33             cf.setBackground(Colour.BLUE);
34
35             cv.setFormat(cf);
36             cv.setSize(6000);
37             cv.setDimension(10);
38
39             sheet2.setColumnView(2, cv);
40
41             workbook.write();
42             workbook.close();
43
44         }catch(Exception e){}
45     }  

同时,读取Excel中的内容为:

 1 public void displayExcel(){
 2         try {
 3             Workbook wb = Workbook.getWorkbook(new File("test.xls"));
 4
 5             Sheet s = wb.getSheet(0);
 6             System.out.println(s.getCell(0, 0).getContents());
 7         } catch (BiffException e) {
 8             // TODO Auto-generated catch block
 9             e.printStackTrace();
10         } catch (IOException e) {
11             // TODO Auto-generated catch block
12             e.printStackTrace();
13         }
14
15     }  

方法二,利用jar包:poi-3.2-FINAL-20081019.jar

 1 public void exportExcel(){
 2
 3         HSSFWorkbook wb = new HSSFWorkbook();//创建工作薄
 4
 5         HSSFFont font = wb.createFont();
 6         font.setFontHeightInPoints((short)24);
 7         font.setFontName("宋体");
 8         font.setColor(HSSFColor.BLACK.index);
 9         font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
10
11         HSSFCellStyle style = wb.createCellStyle();
12         style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
13         style.setFillForegroundColor(HSSFColor.LIGHT_TURQUOISE.index);
14         style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
15         style.setBorderBottom(HSSFCellStyle.BORDER_THICK);
16         style.setFont(font);
17
18         HSSFSheet sheet = wb.createSheet("test");//创建工作表,名称为test
19
20         int iRow = 0;//行号
21         int iMaxCol = 17;//最大列数
22         HSSFRow row = sheet.createRow(iRow);
23         HSSFCell cell = row.createCell((short)0);
24         cell.setCellValue(new HSSFRichTextString("测试excel"));
25         cell.setCellStyle(style);
26         sheet.addMergedRegion(new Region(iRow,(short)0,iRow,(short)(iMaxCol-1)));
27
28         ByteArrayOutputStream os = new ByteArrayOutputStream();
29
30         try{
31             wb.write(os);
32         }catch(IOException e){
33             e.printStackTrace();
34             //return null;
35         }
36
37         byte[] xls = os.toByteArray();
38
39         File file = new File("test01.xls");
40         OutputStream out = null;
41         try {
42              out = new FileOutputStream(file);
43              try {
44                 out.write(xls);
45             } catch (IOException e) {
46                 // TODO Auto-generated catch block
47                 e.printStackTrace();
48             }
49         } catch (FileNotFoundException e1) {
50             // TODO Auto-generated catch block
51             e1.printStackTrace();
52         }
53
54
55     }  

这里补上相关的jar包:jxl.jar, poi.jar   的下载地址:

http://download.csdn.net/download/kuangfengbuyi/4658127

三、Excel导入到数据库

1、添加POI jar包到项目的lib目录下-
2、Excel文件目录:d://excel.xls-
3、数据库字段为:num1 num2 num3 num4 num5 num6-
4、数据库名:blog-
5、表名:test-
6、编写类:连接mysql的字符串方法、插入的方法、实体类--

 1 import java.io.FileInputStream;-
 2 import java.io.FileNotFoundException;-
 3 import java.io.IOException;-
 4 import org.apache.commons.logging.Log;-
 5 import org.apache.commons.logging.LogFactory;-
 6 import org.apache.poi.hssf.usermodel.HSSFCell;-
 7 import org.apache.poi.hssf.usermodel.HSSFRow;-
 8 import org.apache.poi.hssf.usermodel.HSSFSheet;-
 9 import org.apache.poi.hssf.usermodel.HSSFWorkbook;-
10
11 public class TestExcel {-
12       //记录类的输出信息-
13       static Log log = LogFactory.getLog(TestExcel.class); -
14       //获取Excel文档的路径-
15       public static String filePath = "D://excel.xls";-
16       public static void main(String[] args) {-
17             try {-
18                   // 创建对Excel工作簿文件的引用-
19                   HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));-
20                   // 在Excel文档中,第一张工作表的缺省索引是0
21                   // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);-
22                   HSSFSheet sheet = wookbook.getSheet("Sheet1");-
23                   //获取到Excel文件中的所有行数-
24                   int rows = sheet.getPhysicalNumberOfRows();
25                   //遍历行-
26                   for (int i = 0; i < rows; i++) {-
27                         // 读取左上端单元格-
28                         HSSFRow row = sheet.getRow(i);-
29                         // 行不为空-
30                         if (row != null) {-
31                               //获取到Excel文件中的所有的列-
32                               int cells = row.getPhysicalNumberOfCells();-
33                               String value = "";     -
34                               //遍历列-
35                               for (int j = 0; j < cells; j++) {-
36                                     //获取到列的值-
37                                     HSSFCell cell = row.getCell(j);-
38                                     if (cell != null) {-
39                                           switch (cell.getCellType()) {-
40                                                 case HSSFCell.CELL_TYPE_FORMULA:-
41                                                 break;-
42                                                 case HSSFCell.CELL_TYPE_NUMERIC:-
43                                                       value += cell.getNumericCellValue() + ",";        -
44                                                 break;  -
45                                                 case HSSFCell.CELL_TYPE_STRING:-
46                                                       value += cell.getStringCellValue() + ",";-
47                                                 break;-
48                                                 default:-
49                                                       value += "0";-
50                                                 break;-
51                                     }-
52                               }
53                         }-
54                         // 将数据插入到mysql数据库中-
55                         String[] val = value.split(",");-
56                         TestEntity entity = new TestEntity();-
57                         entity.setNum1(val[0]);-
58                         entity.setNum2(val[1]);-
59                         entity.setNum3(val[2]);-
60                         entity.setNum4(val[3]);-
61                         entity.setNum5(val[4]);-
62                         entity.setNum6(val[5]);-
63                         TestMethod method = new TestMethod();-
64                         method.Add(entity);-
65                   }-
66              }-
67       } catch (FileNotFoundException e) {-
68             e.printStackTrace();-
69       } catch (IOException e) {-
70             e.printStackTrace();-
71       }-
72    }-
73 }-
时间: 2024-10-04 22:54:31

java生成Excel两种方式的相关文章

一步步分析Java深拷贝的两种方式-clone和序列化

今天遇到一道面试题,询问深拷贝的两种方法.主要就是clone方法和序列化方法.今天就来分析一下这两种方式如何实现深拷贝.如果想跳过解析的朋友,直奔"重点来了!"寻找答案. clone方法 例1:我们不妨建立一个Exam对象 考试类Exam.java文件 public class Exam implements Cloneable { private int examId; private String examName; public Exam() { } public Exam(in

java笔记线程两种方式模拟电影院卖票

1 public class SellTicketDemo { 2 public static void main(String[] args) { 3 // 创建三个线程对象 4 SellTicket st1 = new SellTicket(); 5 SellTicket st2 = new SellTicket(); 6 SellTicket st3 = new SellTicket(); 7 8 // 给线程对象起名字 9 st1.setName("窗口1"); 10 st2.

Java Thread Synchroize两种方式的优劣

Context: 关于Thread老是看了忘,看了忘记.还是写下来吧.翻译的是orcale官网的锁解释文档地址 锁: 同步机制是围绕内部实体即intrinsic lock(intrinsic固有的.本质的).monitor lock(监控锁).Intrinsic lock在同步上扮演两个角色:1.强制的排他性读取对象的状态(也就是线程访问对象的属性.方法等是互斥的).2保持happens-before relationship来确保变量.方法的可见性. 每个对象都有与其关联的intrinsic

采用java和数据库两种方式进行加锁

java代码加锁 publicstatic synchronized int generate(StringtableName){Stringsql = "select value from t_table_id where table_name=?";Connectionconn = null;PreparedStatementpstmt = null;ResultSetrs = null;intvalue = 0;try{conn= DbUtil.getConnection();p

Java 和 数据库两种方式进行加锁

java方式: publicstatic synchronized int generate(StringtableName){ Stringsql = "select value from t_table_id where table_name=?"; Connectionconn = null; PreparedStatementpstmt = null; ResultSetrs = null; intvalue = 0; try{ conn= DbUtil.getConnecti

JAVA连接Oracle两种方式

以前学习.NET连接数据库时,也是做各种的连接配置.而如今在用到java操纵Oracle时,同样是一些的操作.在此总结一下. 1.JDBC_ODBC连接数据库 此方法需要配置ODBC数据源,本机必须有Oracle数据库 1.配置数据源 打开控制面板--管理工具--数据源 2.接下来在代码中连接即可 //使用jdbc_odbc桥接方式连接,需要配置数据源 public static void main(String [] args){ try{ //1.加载驱动 Class.forName("su

java及javascript两种方式获取YYYY-MM-dd HH:mm:ss格式的日期字符串

一.java方式 String leaveTime=""; SimpleDateFormat sDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); Date date=new Date(); leaveTime=sDateFormat.format(date); 二.javascript方式 <script type="text/javascript"> $().ready(

java 创建对象的两种方式

一: Object object = new Object(); 二: public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException { //可以通过映射的方式来获取 DemoTest2 myobject = (DemoTest2)Class.forName("DemoTest2").newInstance(); m

java生成二维码使用QRCode和ZXing两种方式

QRCode是日本人开发的ZXing是google开发的 QRCode开发需要包http://download.csdn.net/detail/xiaokui_wingfly/7957815 ZXing开发需要包http://download.csdn.net/detail/u010457960/5301392 QRCode方式: package cn.utils; import java.awt.Color; import java.awt.Graphics2D; import java.aw