- 浏览: 1510840 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 1185这是我自已写的Web版的数据库管理工具,主要是依赖于JDBC ... -
Eclipse创建Web项目
2017-07-29 10:53 7841. 打开创建Web项目的对话框 2 ... -
Ant常用的命令
2016-06-16 13:31 13521. 使用Ant生成War包: <war ... -
在Eclipse上使用Ant发布项目
2015-10-17 15:03 1378这里笔者使用是Eclip ... -
Resin中增加一个虚拟目录的方法
2015-09-13 12:53 1124打开resin.config 找到到<h ... -
一个用XML构建Swing视图的框架
2015-09-06 23:12 2610平常想用Java写一些 ... -
Eclipse常见问题
2015-08-24 19:41 741如果Eclipse被强制关闭时,Tomcat可能没有 ... -
Spring Tools Suite 入门教程
2015-05-09 09:15 0Spring Tools Suit,这里简称STS,是 ... -
使用FTP的方法
2015-03-01 17:49 10211. FlashFXP 收费的软件,但是比较好 ... -
关于Spring
2015-02-16 14:46 2007Spring是一个轻量级J2EE框架。 Sp ... -
用Java实现发送邮件到163
2014-12-28 14:50 3859/* 在java版经常看到有人问如何用javamai ... -
Hibernate入门
2014-12-27 01:34 931前言 使用面向对象的语言和关系型的数据库,开 ... -
修改date.toLocaleString()的警告
2014-10-15 11:31 2556我们在写程序的时候,经常要查看时间,所以我们经常会用到 ... -
Java基础题 -- 简述题
2014-04-26 13:44 729(1)简述Java的运行机制 答案:Java语言根 ... -
Java基础题 -- 填空题
2014-04-26 10:00 18911. ______是一个抽象的计算机,和实际的计算机一样, ... -
FreeMaker入门
2014-04-07 19:51 1018第一章 简介 1 什么是FreeMaker ... -
jdk8 新语法
2014-04-01 23:32 1286import java.util.*; public ... -
MyBatis 入门
2014-03-27 23:31 1726每个MyBatis的中心是SqlSessionFact ... -
Jetty入门
2014-02-26 23:48 1581Jetty是一个简易的WebServer框架,使用 ... -
用Swing做的H2管理器
2014-02-24 23:07 1571MainFrame 继承了 JFrame , 增加c ...
相关推荐
在Java编程领域,生成Excel表格是一项常见的需求,尤其在数据导出、报表生成或数据分析时。本主题聚焦于“java代码生成excel表并下载”,这是一个关键的后端功能,允许用户自定义表格内容并选择下载路径。下面我们将...
Java编程调用PageOffice实现从空白的excel文件动态生成excel表格,设置公式并填充数据。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和...
"Java生成Excel图表" Java生成Excel图表是使用Java语言来生成Excel图表的过程。Excel图表是指使用Excel软件生成的图表,例如柱状图、折线图、饼状图等。Java语言可以使用各种库和框架来生成Excel图表,例如...
`java生成excel表格.zip`和`java生成excel文件表格`可能是包含其他示例代码或已生成的Excel文件。你可以解压这些文件,查看和运行其中的代码,以了解更多的用法和功能,例如如何读取Excel数据,如何设置单元格格式,...
在"java生成excel表格需要的3个jar包"中,提到的三个关键文件是: 1. poi-2.5.1-final-20040804.jar:这是Apache POI的核心库,包含了处理Excel文件的主要类和接口。在这个版本中,你可以找到用于创建、读取和修改...
用于将从数据库输出的数据输出到Excel文件的代码,生成Excel表格文件的类
Java 生成 Excel 文件并下载 Java 生成 Excel 文件是指使用 Java 语言生成 Excel 文件的过程。Excel 文件是一种常用的电子表格文件格式,广泛应用于数据存储和分析。在 Java 中,可以使用 Apache POI 库来生成 ...
当我们谈论“Java操作Excel表格”时,通常是指使用Java来读取、写入或处理Microsoft Excel文件,这在数据分析、报表生成或者数据交换等场景中非常常见。本主题将围绕Java如何与Excel交互进行深入探讨。 首先,Java...
总结,Java生成Excel报表的过程涉及到文件I/O操作、使用第三方库(如JExcelApi)、创建和操作工作簿和工作表对象、设置单元格内容和样式等技术。通过熟练掌握这些知识点,你就能高效地在Java程序中生成各种复杂的...
在压缩包文件“GreateExcel”中,可能包含了示例代码或教程,用于演示如何使用Apache POI生成Excel报表。通过阅读和学习这个文件,开发者可以更好地理解和掌握使用Apache POI创建Excel报表的具体方法和技巧,提升...
通过这个“java的poi生成excel图表demo”,我们可以学习如何利用POI创建动态的、数据驱动的Excel曲线图,进一步提升数据的可视性和理解性。这个压缩包中的“EexcelChart”可能是示例代码、测试数据或生成的Excel文件...
在Java编程环境中,生成Excel报表是一项常见的任务,特别是在数据分析、数据导出或报表制作的场景中...以上就是使用Java生成基于模板的Excel报表的基本步骤和知识点,实际开发中可能还需要根据业务需求进行调整和优化。
在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...
使用java代码生成Excel表格。简单易懂。下载之后修改获取数据库地址之后就可以直接使用
在IT行业中,尤其是在Java开发领域,有时候我们需要生成各种类型的输出,比如表格图片。这在处理数据可视化、报表生成、邮件附件或彩信内容时尤其有用。`Java 原生生成表格图片`这个主题就是关于如何利用Java编程...
在Java编程环境中,将Excel表格转换为PNG图片是一项常见的需求,尤其在数据可视化或报告生成时。本篇文章将深入探讨如何使用Java实现这一功能,主要涉及Apache POI库的运用和其他相关技术。 Apache POI是一个强大的...
java实现生成Excel(.xls)文件程序,并封装了从浏览器下载的方法,压缩包内含有使用说明,希望大神们指教,互相学习
在这个示例中,`exportExcel`方法接收一个二维字符串数组`data`,表示Excel表格的数据,以及一个`outputPath`,用于指定生成的Excel文件路径。我们首先创建一个`XSSFWorkbook`实例,它是用来处理.xlsx格式Excel文件...
在这个场景中,我们关注的是如何使用POI库在Java中生成Excel表格。以下是对标题、描述和标签所涉及知识点的详细说明: 1. **Apache POI 简介** Apache POI 是Java平台上的一个库,它允许开发者读写Microsoft ...
Java生成Excel是编程中常见的需求,特别是在数据处理和报表生成的场景下。Java与Excel的交互通常通过第三方库实现,例如Apache POI、JExcelAPI等。本示例中提到的"java 生成 excel 包含jar包",指的是一个包含相关...