- 浏览: 1485961 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (595)
- Java咖啡厅 (208)
- IT杂侃 (23)
- 程序员笑话 (7)
- 我的后现代文学 (1)
- WEB编程 (116)
- 软件评测 (8)
- 操作系统 (3)
- 炫目Ruby (2)
- 行业知识 (7)
- 我的动漫情结 (6)
- 其他 (8)
- Window DIY (6)
- 古文学 (3)
- 转载文章 (2)
- IT百科 (7)
- 动态网页Active (1)
- 文档 (1)
- 设计理论 (11)
- .NET 快速开发 (18)
- 英语学习 (6)
- 网站分析 (2)
- 开源软件 (4)
- 数据库 (28)
- 笔记 (4)
- 源代码共享 (8)
- IT人物 (2)
- 软件管理 (10)
- 小说创作 (0)
- 大众软件 (12)
- 网站评论 (3)
- 小虾乱说 (10)
- 游戏 (8)
- 心情 (3)
- 娱乐休闲 (2)
- Delphi编程 (1)
- PHP编程 (4)
- 中间件 (2)
- 移动开发 (2)
- Office应用 (2)
- Photoshop (1)
- Eclipse (5)
- 面试题 (1)
- 手机评测 (0)
- VBScript (1)
- WEB前端-EXT (3)
- 吐槽 (1)
- Java咖啡厅 Ibatis (1)
- javascript Ext (1)
- jquery ui (1)
- require (1)
- WEB编程 Javascript (1)
- jquery (1)
- Swing (1)
- 分布式 (1)
最新评论
-
zhangjihao:
28. 下面哪个Set是排序的? A. LinkedHas ...
Java面试题(选择题) -
zhangthe9:
ICMP报文被封装在IP包里,也就是说他是由IP协议承载的,从 ...
Java面试题(选择题) -
zhunengfei:
真的假的?
自已写的jquery ui框架 -
white_crucifix:
少年,发烫是所有智能手机的特点,而莫名发烫是所有安卓手机的特点 ...
【吐槽】三星手机的OS是一砣屎 -
suzu88:
试了一下,可以用。如果美化一下控件和窗体更有意思。
一个用XML构建Swing视图的框架
题记:
这是我到宇信易诚的第二个年头,我被调到了数据部门,现在的我现在无休止的和数据与Excel之间纠结。
1. 我们先定义这三个类
DataItem类,表示一个单元格内的数字
package com.tntxia.pem.entity; public class DataItem { private String value; private String dataType; private String cellStyle=""; public String getCellStyle() { return cellStyle; } public void setCellStyle(String cellStyle) { this.cellStyle = cellStyle; } /** * 空构造函数 */ public DataItem(){ } /** * 字符串参数的构造函数,默认将参数作为这个DataItem的值 */ public DataItem(String value){ this.value = value; } public String getDataType() { return dataType; } public void setDataType(String dataType) { this.dataType = dataType; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
DataRow类,表示Excel中的一行,由多个DataItem组成
package com.tntxia.pem.entity; import java.util.ArrayList; public class DataRow { private ArrayList<DataItem> dataItems=new ArrayList<DataItem>(); public ArrayList<DataItem> getDataItems() { return dataItems; } public void setDataItems(ArrayList<DataItem> dataItems) { this.dataItems = dataItems; } public void add(DataItem item){ this.dataItems.add(item); } public void add(String value){ this.dataItems.add(new DataItem(value)); } public int size(){ return this.getDataItems().size(); } }
DataList类,整个表的数据,由多个DataRow组成。
package com.tntxia.pem.entity; import java.util.ArrayList; public class DataList { private ArrayList<DataRow> rows= new ArrayList<DataRow>(); public ArrayList<DataRow> getRows() { return rows; } public void setRows(ArrayList<DataRow> rows) { this.rows = rows; } public void add(DataRow row){ rows.add(row); } public void remove(int index){ rows.remove(index); } // 把另外一个数据集合,注入到当前数据集合里面来。 public void inject(DataList dataList){ for(DataRow row : dataList.getRows()){ this.rows.add(row); } } public String toString(){ String res = "{"; for(int i=0;i<rows.size();i++){ DataRow row = rows.get(i); res+="{"; for(int k=0;k<row.size();k++){ res+= row.getDataItems().get(k).getValue()+","; } res+="},"; } res+="}"; return res; } public String[][] toTwoDArray(){ ArrayList<DataRow> dataRows = this.getRows(); String[][] result = new String[dataRows.size()][]; int most = 0; for(int i=0;i<dataRows.size();i++){ DataRow row = dataRows.get(i); ArrayList<DataItem> items = row.getDataItems(); if(most<items.size()){ most = items.size(); } result[i]= new String[most]; for(int j=0;j<most;j++){ if(j<items.size()){ DataItem item = items.get(j); result[i][j]=item.getValue(); }else{ result[i][j]="[null]"; } } } return result; } }
2. 写一个Excel的Util类
package com.tntxia.pem; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Locale; 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; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import com.tntxia.pem.entity.DataItem; import com.tntxia.pem.entity.DataList; import com.tntxia.pem.entity.DataRow; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.WorkbookSettings; import jxl.format.Border; import jxl.format.BorderLineStyle; import jxl.format.Colour; import jxl.write.Label; import jxl.write.WritableCell; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; /** * Excel的工具类 * * @author chensx * */ public class ExcelUtil { /** 不居中不加粗,内无边框,白底黑字,上边框 */ private static WritableCellFormat wcf_mbwb = null; /** 居中加粗,白底黑字 */ private static WritableCellFormat getWcfMBWB() { if (wcf_mbwb == null) { WritableFont wcf_mbwb_font = new WritableFont(WritableFont .createFont("宋体"), 10, WritableFont.BOLD); try { wcf_mbwb_font.setColour(Colour.BLACK); wcf_mbwb = new WritableCellFormat(wcf_mbwb_font); wcf_mbwb.setAlignment(jxl.format.Alignment.CENTRE); wcf_mbwb .setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); wcf_mbwb.setBackground(Colour.WHITE); wcf_mbwb.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK); wcf_mbwb.setWrap(true); } catch (WriteException e) { e.printStackTrace(); } } return wcf_mbwb; } /** * 创建空白Excel文件,如果文件已经存在,为了避免覆盖已有文件引起的麻烦,直接返回 */ public static void createExcelFile(String filePath) { File file = new File(filePath); if (file.exists()) { return; } else { try { file.createNewFile(); } catch (Exception e) { e.printStackTrace(); return; } } WorkbookSettings ws = new WorkbookSettings(); ws.setLocale(new Locale("en", "EN")); try { WritableWorkbook workbook = null; workbook = Workbook.createWorkbook(file, ws); if (workbook.getSheets().length == 0) { workbook.createSheet("1", 0); } workbook.write(); } catch (Exception e) { e.printStackTrace(); } } /** * 将dataList里面的数据生成一张Excel表格 */ public static void createExcelFile(String filePath, DataList dataList) { WritableWorkbook workbook = null; File file = new File(filePath); try { workbook = Workbook.createWorkbook(file); WritableSheet sheet = null; if (workbook.getSheets().length == 0) { sheet = workbook.createSheet("sheet", 0); } else { sheet = workbook.getSheet(0); } ArrayList<DataRow> rows = dataList.getRows(); for (int i = 0; i < rows.size(); i++) { DataRow row = rows.get(i); ArrayList<DataItem> items = row.getDataItems(); for (int j = 0; j < items.size(); j++) { DataItem item = items.get(j); Label value_label = null; // 如果Item里面设置了样式,现在只有样式1 if (item.getCellStyle().equals("1")) { value_label = new Label(j, i, item.getValue(), getWcfMBWB()); } else { value_label = new Label(j, i, item.getValue()); } sheet.addCell(value_label); } } workbook.write(); } catch (Exception e) { e.printStackTrace(); } finally { try { workbook.close(); } catch (Exception e) { e.printStackTrace(); } } } /** * 拷贝后,进行修改,其中file1为被copy对象,file2为修改后创建的对象 * 尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去, 以使单元格的内容以不同的形式表现 * * @param file1 * @param file2 */ public static void modifyExcel(File file1, File file2) { try { Workbook rwb = Workbook.getWorkbook(file1); WritableWorkbook wwb = Workbook.createWorkbook(file2, rwb);// copy int sheetCount = wwb.getNumberOfSheets(); for (int i = 0; i < sheetCount; i++) { WritableSheet ws = wwb.getSheet(i); int rows = ws.getRows(); for (int k = 0; k < rows; k++) { Cell[] rowCells = ws.getRow(k); for (int j = 0; j < rowCells.length; j++) { WritableCell wc = ws.getWritableCell(j, k); // 判断单元格的类型,做出相应的转换 if (wc.getType() == CellType.LABEL) { Label label = (Label) wc; if (label.getString().equals("北京京北方科技股份有限公司")) { label.setString("北京宇信易诚科技有限公司"); } } } } wwb.write(); wwb.close(); rwb.close(); } } catch (Exception e) { e.printStackTrace(); } } public static DataList readDataFromFile(String file, int startIndex) { POIFSFileSystem fs = null; HSSFWorkbook wb = null; DataList dataList = new DataList(); try { fs = new POIFSFileSystem(new FileInputStream(file)); wb = new HSSFWorkbook(fs); } catch (IOException e) { e.printStackTrace(); return null; } HSSFSheet sheet = wb.getSheetAt(0); HSSFRow row = null; HSSFCell cell = null; int rowNum; rowNum = sheet.getLastRowNum(); for (int i = startIndex; i <= rowNum; i++) { row = sheet.getRow(i); if (row == null) continue; DataRow dataRow = new DataRow(); int cellNum = row.getLastCellNum(); for (int k = 0; k < cellNum; k++) { cell = row.getCell((short) k); if (cell == null) { dataRow.add(new DataItem(null)); } else { if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { dataRow.add(String.valueOf((int) cell .getNumericCellValue())); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) { dataRow.add(cell.getStringCellValue()); } } } dataList.add(dataRow); } return dataList; } public static DataList readDataFromFiles(int startIndex) { File root = new File("F:\\exel\\五期导出记录2"); File[] files = root.listFiles(); DataList dataList = new DataList(); for (File file : files) { DataList dl = readDataFromFile(file.getAbsolutePath(), startIndex); dataList.inject(dl); } return dataList; } public static void append(File modelFile, File destFile, int modelStart, int pasteFileStart) { DataList dataList = readDataFromFiles(pasteFileStart); System.out.println(dataList.getRows().size()); try { Workbook rwb = Workbook.getWorkbook(modelFile); WritableWorkbook wwb = Workbook.createWorkbook(destFile, rwb); WritableSheet ws = wwb.getSheet(0); for (int i = 0; i < dataList.getRows().size(); i++) { DataRow row = dataList.getRows().get(i); ArrayList<DataItem> dataItems = row.getDataItems(); for (int k = 0; k < dataItems.size(); k++) { DataItem item = dataItems.get(k); Label itemLabel = new Label(k, i + modelStart, item .getValue()); ws.addCell(itemLabel); } } wwb.write(); wwb.close(); rwb.close(); } catch (Exception e) { e.printStackTrace(); } } public static DataList readExcel(String filePath) { DataList list = new DataList(); try { FileInputStream in = new FileInputStream(filePath); Workbook wb = Workbook.getWorkbook(in); Sheet sheet = wb.getSheet(0); for (int i = 0; i < sheet.getRows(); i++) { DataRow dataRow = new DataRow(); list.add(dataRow); Cell[] cells = sheet.getRow(i); for (int k = 0; k < cells.length; k++) { DataItem item = new DataItem(cells[k].getContents()); dataRow.add(item); } } } catch (Exception e) { e.printStackTrace(); } return list; } public static void main(String[] args) { } }
发表评论
-
原创程序- Web版数据库管理
2017-11-15 00:39 1120这是我自已写的Web版的数据库管理工具,主要是依赖于JDBC ... -
Eclipse创建Web项目
2017-07-29 10:53 7261. 打开创建Web项目的对话框 2 ... -
Ant常用的命令
2016-06-16 13:31 12961. 使用Ant生成War包: <war ... -
在Eclipse上使用Ant发布项目
2015-10-17 15:03 1314这里笔者使用是Eclip ... -
Resin中增加一个虚拟目录的方法
2015-09-13 12:53 1073打开resin.config 找到到<h ... -
一个用XML构建Swing视图的框架
2015-09-06 23:12 2525平常想用Java写一些 ... -
Eclipse常见问题
2015-08-24 19:41 689如果Eclipse被强制关闭时,Tomcat可能没有 ... -
Spring Tools Suite 入门教程
2015-05-09 09:15 0Spring Tools Suit,这里简称STS,是 ... -
使用FTP的方法
2015-03-01 17:49 9231. FlashFXP 收费的软件,但是比较好 ... -
关于Spring
2015-02-16 14:46 1948Spring是一个轻量级J2EE框架。 Sp ... -
用Java实现发送邮件到163
2014-12-28 14:50 3781/* 在java版经常看到有人问如何用javamai ... -
Hibernate入门
2014-12-27 01:34 881前言 使用面向对象的语言和关系型的数据库,开 ... -
修改date.toLocaleString()的警告
2014-10-15 11:31 2497我们在写程序的时候,经常要查看时间,所以我们经常会用到 ... -
Java基础题 -- 简述题
2014-04-26 13:44 691(1)简述Java的运行机制 答案:Java语言根 ... -
Java基础题 -- 填空题
2014-04-26 10:00 18421. ______是一个抽象的计算机,和实际的计算机一样, ... -
FreeMaker入门
2014-04-07 19:51 950第一章 简介 1 什么是FreeMaker ... -
jdk8 新语法
2014-04-01 23:32 1248import java.util.*; public ... -
MyBatis 入门
2014-03-27 23:31 1660每个MyBatis的中心是SqlSessionFact ... -
Jetty入门
2014-02-26 23:48 1549Jetty是一个简易的WebServer框架,使用 ... -
用Swing做的H2管理器
2014-02-24 23:07 1524MainFrame 继承了 JFrame , 增加c ...
相关推荐
java生成excel表格代码示例,下载后可以直接使用
支持多种前端模式,使用java代码可以快速生成自己想要的excel表格,并且用户可以自行选择下载地址和方式。
Java编程调用PageOffice实现从空白的excel文件动态生成excel表格,设置公式并填充数据。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和...
java生成excel图表
java生成excel表格需要的3个jar包
用于将从数据库输出的数据输出到Excel文件的代码,生成Excel表格文件的类
绝对可以的,java生成excel报表 行和列
用java ,apache poi生成excel报表
使用java代码生成Excel表格。简单易懂。下载之后修改获取数据库地址之后就可以直接使用
该实例集成maven开发环境,里面讲解了POI导入和导出Excel表格的基本用法
1.java使用poi生成excel插入图表曲线 2.demo包含完成jar包 3.主要用途是过滤数据自动生成曲线图
java实现生成Excel(.xls)文件程序,并封装了从浏览器下载的方法,压缩包内含有使用说明,希望大神们指教,互相学习
要求能够实现给出任意带table表格的html文件,生成与表格相同内容的excel文件,附件可以作为测试文件,提供给定的roster.html文件,通过java代码,实现生成与html页面的table相同样式的roster.xls文件。
用Java程序读取Excel表格里的内容并显示在Swing界面里。
通过java操作excel表格的工具类库 用法简介 ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体、数字、日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说以上功能已经能够大致满足我们...
生成excel并上传到S3.不需要真正的生成excel文件,只需要拿到byte
Java POI根据模板生成Excel文件并写入磁盘,资源文件仅为实现的简单测试Demo,并没有进行代码优化,可以直接导入运行,资源文件仅供参考。
对图片进行水印处理,利用TESS4J识别图片并提取信息生成excel表格。里面有字库文件所以占用空间较大。 说明:https://blog.csdn.net/xlantian/article/details/80789115
前端页面点击导出jqgrid表格为excel表格代码,有表格样式设置的代码,可以参考一下,这是我刚开始工作的时候写的,希望可以帮助像我一样的菜鸟。
java开发中的列表数据导出成excel格式,这个文档包含了所需的jar包和例子代码。