zoukankan      html  css  js  c++  java
  • 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             try18                   // 创建对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                                                 break42                                                 case HSSFCell.CELL_TYPE_NUMERIC:­
    43                                                       value += cell.getNumericCellValue() + ",";        ­
    44                                                 break;  ­
    45                                                 case HSSFCell.CELL_TYPE_STRING:­
    46                                                       value += cell.getStringCellValue() + ","47                                                 break48                                                 default49                                                       value += "0"50                                                 break51 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
  • 相关阅读:
    对 String 的几个错误认识 X
    用C# 自定义Window7的JumpList(跳转列表) X
    IPv6无状态自动配置功能配合DHCPv6无状态配置功能 实现IPv6自动分配
    H3C S7500E IPV6白皮书
    静默方式执行chkdsk命令
    IPv6基本知识(转载)
    解决win7官方主题themepack无法安装的问题
    英保通等PXE网刻软件的使用
    通过命令提示符修改windows默认打印机
    OFFICE2010出现两个激活信息的处理办法。
  • 原文地址:https://www.cnblogs.com/arctictern/p/6644344.html
Copyright © 2011-2022 走看看