- 浏览: 831282 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (530)
- Java编程 (64)
- C/C++/D (6)
- .Net/C# (9)
- Ruby (12)
- JavaScript (77)
- XML (1)
- JSON (1)
- Ajax (17)
- ExtJs (81)
- YUI (1)
- JQuery (7)
- DWR (1)
- HTML (7)
- CSS (7)
- Database (6)
- PowerDesigner (23)
- DB2 (2)
- Oracle (57)
- MS SQL Server (8)
- MySQL (6)
- JSP/Servlet/JSTL/TagLib (3)
- Spring (1)
- Hibernate (0)
- iText (0)
- Struts (0)
- Struts2 (0)
- iReport (0)
- FreeMarker (0)
- HttpClient (1)
- POI (6)
- FckEditor (15)
- Eclipse / MyEclipse (10)
- IntelliJ IDEA (0)
- NetBeans (0)
- Tomcat (11)
- WebLogic (1)
- Jboss (3)
- jetty (4)
- IIS (2)
- CVS/VSS (1)
- FTP (1)
- Windows/DOS (6)
- Linux/Unix (0)
- 软件建模 UML (0)
- Design Pattern & Thinking In Programming (10)
- 数据结构与算法 (12)
- 软件项目管理 (9)
- 行业应用解决方案 (3)
- 电脑软件与故障解决 (13)
- 编程语言 (1)
- 十万个为什么 (3)
- JBPM (2)
- sysbase (2)
- JDBC (8)
- Ant (2)
- Case-计算机辅助软件工程 (1)
- WebService (4)
- 浏览器 (1)
最新评论
-
gaoqiangjava:
同一楼,还请大手帮解决
JAVA读取word文件 -
hyl523:
// 判断数组中的第一个值是否未定义,如果未定义,便定义为空对 ...
javascript面向对象之二 命名空间 -
ping12132200:
ping12132200 写道我抱着个错不是因为:body标签 ...
extjs在IE报对象不支持此属性或方法 -
ping12132200:
我抱着个错不是因为:body标签内的第一个元素不能为文本tex ...
extjs在IE报对象不支持此属性或方法 -
fireinjava:
呀,不错,转走了,谢谢啦~
利用OpenOffice将word转换成PDF
下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码:
jxl是一个*国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。 另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
使用如下:
搭建环境
将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。
基本操作
一、创建文件
拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为
“第一页”,大致效果如下:
- package test;
- // 生成Excel的类
- import java.io.File;
- import jxl.Workbook;
- import jxl.write.Label;
- import jxl.write.WritableSheet;
- import jxl.write.WritableWorkbook;
- public class CreateExcel {
- public static void main(String args[]) {
- try {
- // 打开文件
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ));
- // 生成名为“第一页”的工作表,参数0表示这是第一页
- WritableSheet sheet = book.createSheet( " 第一页 " , 0 );
- // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
- // 以及单元格内容为test
- Label label = new Label( 0 , 0 , " test " );
- // 将定义好的单元格添加到工作表中
- sheet.addCell(label);
- /**/ /*
- * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
- */
- jxl.write.Number number = new jxl.write.Number( 1 , 0 , 555.12541 );
- sheet.addCell(number);
- // 写入数据并关闭文件
- book.write();
- book.close();
- } catch (Exception e) {
- System.out.println(e);
- }
- }
package test; // 生成Excel的类 import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class CreateExcel { public static void main(String args[]) { try { // 打开文件 WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " )); // 生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet = book.createSheet( " 第一页 " , 0 ); // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) // 以及单元格内容为test Label label = new Label( 0 , 0 , " test " ); // 将定义好的单元格添加到工作表中 sheet.addCell(label); /**/ /* * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123 */ jxl.write.Number number = new jxl.write.Number( 1 , 0 , 555.12541 ); sheet.addCell(number); // 写入数据并关闭文件 book.write(); book.close(); } catch (Exception e) { System.out.println(e); } } }
编译执行后,会产生一个Excel文件。
三、读取文件
以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:
- package test;
- // 读取Excel的类
- import java.io.File;
- import jxl.Cell;
- import jxl.Sheet;
- import jxl.Workbook;
- public class ReadExcel {
- public static void main(String args[]) {
- try {
- Workbook book = Workbook.getWorkbook( new File( " test.xls " ));
- // 获得第一个工作表对象
- Sheet sheet = book.getSheet( 0 );
- // 得到第一列第一行的单元格
- Cell cell1 = sheet.getCell( 0 , 0 );
- String result = cell1.getContents();
- System.out.println(result);
- book.close();
- } catch (Exception e) {
- System.out.println(e);
- }
- }
package test; // 读取Excel的类 import java.io.File; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; public class ReadExcel { public static void main(String args[]) { try { Workbook book = Workbook.getWorkbook( new File( " test.xls " )); // 获得第一个工作表对象 Sheet sheet = book.getSheet( 0 ); // 得到第一列第一行的单元格 Cell cell1 = sheet.getCell( 0 , 0 ); String result = cell1.getContents(); System.out.println(result); book.close(); } catch (Exception e) { System.out.println(e); } } }
程序执行结果:test
四、修改文件
利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,
其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:
- package test;
- import java.io.File;
- import jxl.Workbook;
- import jxl.write.Label;
- import jxl.write.WritableSheet;
- import jxl.write.WritableWorkbook;
- public class UpdateExcel {
- public static void main(String args[]) {
- try {
- // Excel获得文件
- Workbook wb = Workbook.getWorkbook( new File( " test.xls " ));
- // 打开一个文件的副本,并且指定数据写回到原文件
- WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ),
- wb);
- // 添加一个工作表
- WritableSheet sheet = book.createSheet( " 第二页 " , 1 );
- sheet.addCell( new Label( 0 , 0 , " 第二页的测试数据 " ));
- book.write();
- book.close();
- } catch (Exception e) {
- System.out.println(e);
- }
- }
package test; import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class UpdateExcel { public static void main(String args[]) { try { // Excel获得文件 Workbook wb = Workbook.getWorkbook( new File( " test.xls " )); // 打开一个文件的副本,并且指定数据写回到原文件 WritableWorkbook book = Workbook.createWorkbook( new File( " test.xls " ), wb); // 添加一个工作表 WritableSheet sheet = book.createSheet( " 第二页 " , 1 ); sheet.addCell( new Label( 0 , 0 , " 第二页的测试数据 " )); book.write(); book.close(); } catch (Exception e) { System.out.println(e); } } }
其他操作
一、 数据格式化
在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。
1、 字串格式化
字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和
WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句,
为方便叙述,我们为每一行命令加了编号:
- WritableFont font1 =
- new WritableFont(WritableFont.TIMES, 16 ,WritableFont.BOLD); ①
- WritableCellFormat format1 = new WritableCellFormat(font1); ②
- Label label = new Label( 0 , 0 ,”data 4 test”,format1) ③
- 其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的
- 构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。
- ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种
- 属性,后面的单元格格式化中会有更多描述。
- ③处使用了Label类的构造子,指定了字串被赋予那种格式。
- 在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们
- 上面的实例,可以指定:
- // 把水平对齐方式指定为居中
- format1.setAlignment(jxl.format.Alignment.CENTRE);
- // 把垂直对齐方式指定为居中
- format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
WritableFont font1 = new WritableFont(WritableFont.TIMES, 16 ,WritableFont.BOLD); ① WritableCellFormat format1 = new WritableCellFormat(font1); ② Label label = new Label( 0 , 0 ,”data 4 test”,format1) ③ 其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的 构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。 ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种 属性,后面的单元格格式化中会有更多描述。 ③处使用了Label类的构造子,指定了字串被赋予那种格式。 在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们 上面的实例,可以指定: // 把水平对齐方式指定为居中 format1.setAlignment(jxl.format.Alignment.CENTRE); // 把垂直对齐方式指定为居中 format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
二、单元格操作
Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI
提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。
1、 合并单元格
- WritableSheet.mergeCells( int m, int n, int p, int q);
- // 作用是从(m,n)到(p,q)的单元格全部合并,比如:
- WritableSheet sheet = book.createSheet(“第一页”, 0 );
- // 合并第一列第一行到第六列第一行的所有单元格
- sheet.mergeCells( 0 , 0 , 5 , 0 );
WritableSheet.mergeCells( int m, int n, int p, int q); // 作用是从(m,n)到(p,q)的单元格全部合并,比如: WritableSheet sheet = book.createSheet(“第一页”, 0 ); // 合并第一列第一行到第六列第一行的所有单元格 sheet.mergeCells( 0 , 0 , 5 , 0 );
合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。
2、 行高和列宽
- WritableSheet.setRowView( int i, int height);
- // 作用是指定第i+1行的高度,比如:
- // 将第一行的高度设为200
- sheet.setRowView( 0 , 200 );
- WritableSheet.setColumnView( int i, int width);
- // 作用是指定第i+1列的宽度,比如:
- // 将第一列的宽度设为30
- sheet.setColumnView( 0 , 30 );
WritableSheet.setRowView( int i, int height); // 作用是指定第i+1行的高度,比如: // 将第一行的高度设为200 sheet.setRowView( 0 , 200 ); WritableSheet.setColumnView( int i, int width); // 作用是指定第i+1列的宽度,比如: // 将第一列的宽度设为30 sheet.setColumnView( 0 , 30 );
jExcelAPI还有其他的一些功能,比如插入图片等,这里就不再一一介绍,读者可以自己探索。
其中:如果读一个excel,需要知道它有多少行和多少列,如下操作:
- Workbook book = Workbook.getWorkbook( new File( " 测试1.xls " ));
- // 获得第一个工作表对象
- Sheet sheet = book.getSheet( 0 );
- // 得到第一列第一行的单元格
- int columnum = sheet.getColumns(); // 得到列数
- int rownum = sheet.getRows(); // 得到行数
- System.out.println(columnum);
- System.out.println(rownum);
- for ( int i = 0 ; i < rownum; i ++ ) // 循环进行读写
- {
- for ( int j = 0 ; j < columnum; j ++ ) {
- Cell cell1 = sheet.getCell(j, i);
- String result = cell1.getContents();
- System.out.print(result);
- System.out.print( " \t " );
- }
- System.out.println();
- }
- book.close();
ExcelBean.java文件用于生成Excel
- public class ExcelBean {
- public String expordExcel(OutputStream os, List courseList,List studentList)
- throws Exception {
- WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
- String tmptitle = "课程“"+((Course_info)courseList.get(0)).getCource_name()+"”的选课学生列表"; // 标题
- WritableSheet wsheet = wbook.createSheet("第一页", 0); // sheet名称
- // 设置excel标题
- WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,
- WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
- Colour.BLACK);
- WritableCellFormat wcfFC = new WritableCellFormat(wfont);
- wsheet.addCell(new Label(1, 0, tmptitle, wcfFC));
- wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,
- WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
- Colour.BLACK);
- wcfFC = new WritableCellFormat(wfont);
- // 开始生成主体内容
- wsheet.addCell(new Label(0, 2, "课程名称"));
- wsheet.addCell(new Label(1, 2, "学 号"));
- .........
- for(int i=3;i<studentList.size()+3;i++)
- {
- wsheet.addCell(new Label(0, i, ((Course_info)courseList.get(0)).getCource_name()));
- wsheet.addCell(new Label(1, i, ((Student_info)studentList.get(0)).getStudentID()));
- ...........
- }
- // 主体内容生成结束
- wbook.write(); // 写入文件
- wbook.close();
- os.close();
- return "success";
- }
- }
public class ExcelBean { public String expordExcel(OutputStream os, List courseList,List studentList) throws Exception { WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件 String tmptitle = "课程“"+((Course_info)courseList.get(0)).getCource_name()+"”的选课学生列表"; // 标题 WritableSheet wsheet = wbook.createSheet("第一页", 0); // sheet名称 // 设置excel标题 WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK); WritableCellFormat wcfFC = new WritableCellFormat(wfont); wsheet.addCell(new Label(1, 0, tmptitle, wcfFC)); wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK); wcfFC = new WritableCellFormat(wfont); // 开始生成主体内容 wsheet.addCell(new Label(0, 2, "课程名称")); wsheet.addCell(new Label(1, 2, "学 号")); ......... for(int i=3;i<studentList.size()+3;i++) { wsheet.addCell(new Label(0, i, ((Course_info)courseList.get(0)).getCource_name())); wsheet.addCell(new Label(1, i, ((Student_info)studentList.get(0)).getStudentID())); ........... } // 主体内容生成结束 wbook.write(); // 写入文件 wbook.close(); os.close(); return "success"; } }
控制器:
- public class EExcelDownController extends AbstractController {
- private ICourse_infoManage courseManage;
- public void setCourseManage(ICourse_infoManage courseManage) {
- this.courseManage = courseManage;
- }
- @Override
- protected ModelAndView handleRequestInternal(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- Integer course_id=new Integer(request.getParameter("course_id"));
- List courseList=this.courseManage.getCourseById(course_id);
- List studentList = this.courseManage.getStudentByCourseId(course_id);
- try {
- OutputStream os = response.getOutputStream();// 取得输出流
- response.reset();// 清空输出流
- response.setHeader("Content-disposition", "attachment; filename=student.xls");// 设定输出文件头
- response.setContentType("application/msexcel");// 定义输出类型
- ExcelBean excelBean = new ExcelBean();
- excelBean.expordExcel(os,courseList,studentList);// 调用生成excel文件bean
- } catch (Exception e) {
- System.out.println(e);
- }
- return null;
- }
- }
发表评论
-
java调用dll方法
2011-06-02 21:56 1561Java语言本身具有跨平台性,如果通过Java调用DLL的技术 ... -
DIV+CSS
2011-05-31 13:07 884http://www.divcss5.com/ -
getWriter() has already been called for this response的解决办法
2011-05-30 14:15 3696Servlet规范说明,不能既调用 response.getO ... -
CVS客户端
2011-05-27 14:54 849http://www.syntevo.com/index.ht ... -
UML工具
2011-05-25 18:59 881http://www.umlchina.com/Tools/N ... -
applicationcontext.xml怎么分模块简化配置?
2011-05-22 18:02 2229(1) 在用spring做项止的时候,我们经常会在appli ... -
Struts1.2分模块后的路径问题
2011-05-22 18:00 15921.某项目分模块的web.xml配置如下: <i ... -
java API chm html 1.5 1.6 中文版英文版 帮助文档
2011-05-14 10:45 2658J2SE DK & API下载 ————————- h ... -
ClientAbortException原因探究
2010-12-23 16:17 1852WEB是部署在TOMCAT5.5.17下面的,采用JNDI链接 ... -
java游戏 http://blog.csdn.net/cping1982/archive/2009/06/10/4258704.aspx
2010-11-08 22:31 1214http://blog.csdn.net/cping1982/ ... -
Java中字符串(String)的存储和赋值原理
2010-11-08 22:14 1210可能很多java的初学者对String的存储和赋值有迷惑, ... -
Java中字符串的最大长度
2010-11-08 22:12 1296在cpp中为了可移植性,string的长度是string::s ... -
Java与XML联合编程之DOM篇
2010-10-06 13:37 869一、DOM初步 DOM是Document Object ... -
jexl解析表达式字符串
2010-10-06 11:44 1936网址:http://commons.apache.org/je ... -
Java中getResourceAsStream的用法
2010-10-06 11:31 1988Java中getResourceAsStream的用法 首先 ... -
Class.getResourceAsStream 和 ClassLoader.getResourceAsStream
2010-10-06 11:08 835Class.getResourceAsStream 和 Cla ... -
利用第三方的Jar包内的类和方法来判别文件编码
2010-08-06 13:07 1757今天在论坛里看见了一个人发帖子问,如何查看文件的编码。有一个人 ... -
将Java程序作成exe文件的几种方法
2010-08-06 13:04 950看到网上有同志的介绍将Java程序作成exe文件的方法,写的不 ... -
Java基本类型转换总结
2010-07-26 19:49 1370数值型转换成字符型 // 基本数据类型, int i_a ... -
怎样不使用中间变量来交换两个变量的值?
2010-07-10 21:39 1453int 的话就+后再减.string 的话就连接再截取. ...
相关推荐
java将Excel文件转换未pdf文件。依赖itext和poi。附件是一个完整的工程。
通过它JAVA开发人员可以读取EXCEL文件的内容,创建新的EXCEL文件,更新已经存在的EXCEL文件。
java实现excel转pdf文件,并且支持excel单元格中带有图片的转换 基于 aspose,Excel转为 pdf工具类 Java Excel转为PDF(aspose)工具类 复造轮子 复制即用
使用com.aspose.cells类实现excel文件转换为pdf文件, 附件jar包 ,dome简单明了
JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法(poi) JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法是使用 Apache POI 库来实现的。POI 库是一个开放源代码的 Java 库,提供了对 Microsoft Office 文件格式...
JXL(Java Excel API)是一个开源的 Java 库,用于读写 Excel 文件。使用 JXL 库可以实现 Excel 文件的读取、写入和编辑。 在上面的代码中,使用 JXL 库实现了 Excel 文件的写入。首先,需要导入 JXL 库的相关类,...
java的POI操作Excel文件.pdf
本文档主要介绍了使用 Java 语言操作 Excel 文件的代码实现,涵盖了创建新的 Excel 文件、添加表头、合并单元格、设置单元格样式等功能。 创建新的 Excel 文件 在 Java 中想要操作 Excel 文件,需要使用 Apache ...
3. iText:一个Java库,用于生成PDF文件。 Java生成Excel图表的常用方法: 1. 使用ChartFactory创建JFreeChart对象。 2. 使用DefaultPieDataset创建饼状图数据集。 3. 使用CategoryDataset创建柱状图数据集。 ...
JAVA读取PDF、WORD、EXCEL等文件的方法
java导出Excel文件代码:从导入依赖、yml文件配置、前台vue、js代码、controller、service实现都有了
java文档excel、word、pdf、ppt转图片
使用maven构建工具。前端使用pdf插件。后台搭建的springmvc框架,主要用于web在线预览pdf、word、excel文件。不需要安装office等其他插件
Jacob Word excel 转PDF 合并PDF文件,需要安装微软的转换插件,压缩包内含插件
"Java操作Word、Excel、PDF等文档" Java是一种流行的编程语言,可以用于操作多种类型的文档,包括Word、Excel、PDF等。本文将对Java操作Word、Excel、PDF等文档的知识点进行总结和分析。 一、Java操作Word文档 ...