如何用Apache POI读取Excel,第1张

  首先POI是开源组织Apache出品的一个开源jar包,提供了方便解析Excel的API,我们可以非常方便的使用它来读取Excel。这里介绍35Final版本。

  所需用到的jar包如下:

  说到Excel,有2003和2007,格式是不一样的,用POI解析的方法也就不一样,Excel2003主要是使用orgapachepoihssfusermodel包中的类来解析,而Excel2007就是使用orgapachepoixssfusermodel来解析。

  解析Excel2003源码

说到Excel,有2003和2007,格式是不一样的,用POI解析的方法也就不一样,Excel2003主要是使用orgapachepoihssfusermodel包中的类来解析,而Excel2007就是使用orgapachepoixssfusermodel来解析。

解析Excel2003源码

StringBuffer content = new StringBuffer();

  HSSFWorkbook workbook = new HSSFWorkbook(is); // 创建对Excel工作簿文件的引用

  for (int numSheets = 0; numSheets < workbookgetNumberOfSheets(); numSheets++) {

   if (null != workbookgetSheetAt(numSheets)) {

    HSSFSheet aSheet = workbookgetSheetAt(numSheets); // 获得一个sheet

    for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheetgetLastRowNum(); rowNumOfSheet++) {

     if (null != aSheetgetRow(rowNumOfSheet)) {

      HSSFRow aRow = aSheetgetRow(rowNumOfSheet); // 获得一行

      for (int cellNumOfRow = 0; cellNumOfRow <= aRowgetLastCellNum(); cellNumOfRow++) {

       if (null != aRowgetCell(cellNumOfRow)) {

        HSSFCell aCell = aRowgetCell(cellNumOfRow); // 获得列值

        

        if (aCellgetCellType() == HSSFCellCELL_TYPE_NUMERIC) {

         contentappend(aCellgetNumericCellValue() + "\t");

        } else if (aCellgetCellType() == HSSFCellCELL_TYPE_BOOLEAN) {

         contentappend(aCellgetBooleanCellValue() + "\t");

        } else if (aCellgetCellType() == HSSFCellCELL_TYPE_STRING) {

         contentappend(aCellgetStringCellValue() + "\t");

        } else if (aCellgetCellType() == HSSFCellCELL_TYPE_FORMULA){

         contentappend(aCellgetCellFormula() + "\t");

        } else {

         continue;

        }

       }

       if(cellNumOfRow == aRowgetLastCellNum()) {

        contentappend("\n");

       }

      }

     }

    }

   }

  }

  return contenttoString()trim();

 

解析Excel2007和2003基本一样,只是将HSSFSheet,HSSFCell等都改成XSSFSheet,XSSFCell即可。

另外要提醒大家的是Excel的样式都是基于一个单元格的,所以用HSSFRowgetRowStyle()拿样式会出问题的,不一定会拿到你想要的样式。处理合并单元格是POI的一个难点,只能通过判断当前单元格是否在合并单元格之中,如果是,那此单元格的值便是这个合并单元格的首位置单元格的值,只有通过这样才能来处理合并单元格。

处理合并单元格的代码:

 public static boolean isMergedRegion(HSSFSheet sheet, HSSFCell cell) {

  //得到一个sheet中有多少个合并单元格

  int sheetmergerCount = sheetgetNumMergedRegions();

  for(int i = 0; i < sheetmergerCount; i++) {

   //得出具体的合并单元格

   CellRangeAddress ca = sheetgetMergedRegion(i);

   //得到合并单元格的起始行, 结束行, 起始列, 结束列

   int firstC = cagetFirstColumn();

   int lastC = cagetLastColumn();

   int firstR = cagetFirstRow();

   int lastR = cagetLastRow();

   //判断该单元格是否在合并单元格范围之内, 如果是, 则返回 true

   if(cellgetColumnIndex() <= lastC && cellgetColumnIndex() >= firstC) {

    if(cellgetRowIndex() <= lastR && cellgetRowIndex() >= firstR) {

     return true;

    }

   }

  }

  return false;

 }

 

 public static String getMergedRegionValue(HSSFSheet sheet, HSSFCell cell) {

  //获得一个 sheet 中合并单元格的数量

  int sheetmergerCount = sheetgetNumMergedRegions();

  //便利合并单元格

  for(int i = 0; i < sheetmergerCount; i++) {

   //获得合并单元格

   CellRangeAddress ca = sheetgetMergedRegion(i);

   //获得合并单元格的起始行, 结束行, 起始列, 结束列

   int firstC = cagetFirstColumn();

   int lastC = cagetLastColumn();

   int firstR = cagetFirstRow();

   int lastR = cagetLastRow();

   //判断该单元格是否是在合并单元格中, 如果是, 则返回所在合并单元格的首单元格的值

   if(cellgetColumnIndex() <= lastC && cellgetColumnIndex() >= firstC) {

    if(cellgetRowIndex() <= lastR && cellgetRowIndex() >= firstR) {

     HSSFRow fRow = sheetgetRow(firstR);

     HSSFCell fCell = fRowgetCell(firstC);

     //除了合并单元格首单元格的值, 其余的用()来区分

     if (fCellgetCellType() == HSSFCellCELL_TYPE_NUMERIC && hasBorder(cell)) {

      return StringvalueOf(fCellgetNumericCellValue());

     } else if (fCellgetCellType() == HSSFCellCELL_TYPE_BOOLEAN && hasBorder(cell)) {

      return StringvalueOf(fCellgetBooleanCellValue());

     } else if (fCellgetCellType() == HSSFCellCELL_TYPE_STRING && hasBorder(cell)) {

      return fCellgetStringCellValue();

     } else if (fCellgetCellType() == HSSFCellCELL_TYPE_FORMULA && hasBorder(cell)){

      return StringvalueOf(fCellgetCellFormula());

     }

    }

   }

  }

  return "";

 }

excel的主要功能

1、Excel2010的主要功能第一个是强大的表格功能,打开后就可以看见一个个的小格子,称为单元格,在格可以输入数据,点击开始,在这个功能区中可以设置单元格中的字体颜色,对齐等。

2、数据记录和整理:excel文件中可以存储多个独立的表格,这样就可以方便数据的整理,查找和应用。数据的加工和计算:在需要对现有的数据进行加工和计算时,可以使用表格的公式和函数等功能进行计算处理。

3、Excel主要功能:功能全面:几乎可以处理各种数据。操作方便:菜单、窗口、对话框、工具栏。丰富的数据处理函数。丰富的绘制图表功能:自动创建各种统计图表。丰富的自动化功能:自动更正、自动排序、自动筛选等。

4、excel的主要功能是数据计算和统计。数据计算,可谓是EXCEL的看家本领了。从最简单的加减乘除,到聚合函数SUM、AVERAGE、SUBTOTAL、COUNT等,到条件聚合函数SUMIF、COUNTIF、MAXIF等,几乎是每个用户必会的函数。

5、excel具备功能如下:基本的Excel功能 基本上,excel控件支持excel的一些基本功能,如单次选择、多次选择、合并单元格、多个工作表、交叉工作表、公式索引、层次显示、分组、条件格式、排序、行过滤等。

Excel的主要功能是什么

1、MicrosoftExcel是Microsoft为使用Windows和AppleMacintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。

2、Excel2010的主要功能第一个是强大的表格功能,打开后就可以看见一个个的小格子,称为单元格,在格可以输入数据,点击开始,在这个功能区中可以设置单元格中的字体颜色,对齐等。

3、excel的主要功能是数据计算和统计。数据计算,可谓是EXCEL的看家本领了。从最简单的加减乘除,到聚合函数SUM、AVERAGE、SUBTOTAL、COUNT等,到条件聚合函数SUMIF、COUNTIF、MAXIF等,几乎是每个用户必会的函数。

如何选择合适的数据库解决方案?

1、如果有强大的技术团队,关系型和非关系型数据库都可选择。一般来讲,非关系型数据库需要更多管理维护的时间。

2、(三)MySQL,Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。

3、虽然把上面的架构全部组合在一起可以形成一个强大的高可用,高负载的数据库系统,但是架构选择合适才是最重要的。 混合架构虽然能够解决所有的场景的问题,但是也会面临更多的挑战,你以为的完美架构,背后其实有着更多的坑。

4、例如,如果你需要的是数据分析仓库,关系数据库可能不是一个适合的选择;如果你处理事务的应用要求严格的数据完整性和一致性,就不要考虑NoSQL了。不要重新发明轮子 在过去的数十年,开源数据库技术迅速发展壮大。

5、本文首先讨论了基于第三范式的数据库表的基本设计,着重论述了建立主键和索引的策略和方案,然后从数据库表的扩展设计和库表对象的放置等角度概述了数据库管理系统的优化方案。

6、一定要对自己适用,不一定多高级,如果只是小型站,ACCESS就行了,再要求高点的,MYSQL。

Excel基本功能都有哪些

EXCEL提供了14类100多种基本的图表,包括柱形图、饼图、条形图、面积图、折线图、气泡图以及三维图。

快速求和 对多行多列的单元格数据求和,可以直接选取单元格区域,按组合键Alt、+、=即可快速求和。

基本的Excel功能 基本上,excel控件支持excel的一些基本功能,如单次选择、多次选择、合并单元格、多个工作表、交叉工作表、公式索引、层次显示、分组、条件格式、排序、行过滤等。

excel有什么功能1 表格功能:打开后就可以看见一个个的小格子,称为单元格,可以输入数据,可以设置单元格中的字体颜色大小等。

基本的Excel功能 基本上excel控件都会支持excel的一些基本功能,比如单选,多选,合并单元格,多工作表、跨工作表,公式索引、分层显示、分组、有条件的格式、排序、行筛选等等基本功能。

问题一:开源数据库是什么 作用是什么? 做网站的吗?? 开源意思是开放源代码,没有加密

开源数据库,说明这个数据库没有加密的,代码就是开放的

数据库作用都是用于动态语言开发的网站

问题二:四大开源数据库是哪些 开源世界中的那几个免费数据库

发布时间:2011-11-22 09:34:30 来源:CSDN 评论:0 点击:1476 次 字号:大 中 小

QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 百度空间 百度搜藏 开心网 复制 更多 0

开源数据库MySQL  MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源

开源数据库MySQL

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

盘点:开源社区那些免费的数据库软件

MySQL为多种编程语言提供了API,包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。而其自身是采用C和C++编写的,使用了多种编译器进行测试,所以,MySQL能够保证源代码具有很强的可移植性。这样的一款数据库,自然能够支持几乎所有的操作系统,从Unix、Linux到Windows,具体包括AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。最重要的是,它是一个可以处理拥有上千万条记录的大型数据库。

与此同时,MySQL也产生了很多分支版本的数据库也非常值得推荐。

首先是MariaDB,它是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者 Michael Widenius创办的公司所开发的免费开源的数据库服务器。与MySQL相比较,MariaDB更强的地方在于它拥有更多的引擎,包括Maria存储引擎、PBXT存储引擎、XtraDB存储引擎、FederatedX存储引擎,它能够更快的复制查询处理、运行的速度更快、更好的功能测试以及支持对Unicode的排序等。

其次是rcona,它为MySQL数据库服务器进行了改进,在功能和性能上较MySQL有着很显著的提升。该版本提升了在高负载情况下的InnoDB的性能,同时,它还为DBA提供一些非常有用的性能诊断工具,并且提供很多参数和命令来控制服务器行为。

第三是Percona Server,它使用了诸如google-mysql-tools、Proven Scaling和 Open Query对MySQL进行改造。并且,它只包含MySQL的服务器版,并没有提供相应对 MySQL的Connector和GUI工具进行改进。

非关系型数据库NoSQL

从NoSQL的字面上理解,NoSQL就是Not Only SQL,被业界认为是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

盘点:开源社区那些免费的数据库软件

当然,NoSQL也是随着互联网Web20网站的兴起才能取得长足的进步。关键的需求在于,传统的关系数据库在应付Web20网站,特>>

问题三:什么是开源数据库 开源意思是开放源代码,没有加密

开源数据库,说明这个数据库没有加密的,代码就是开放的

数据库作用都是用于动态语言开发的网站

问题四:什么是开源大数据技术? 即数据量极为庞大,数据体结构并不清晰,冗余数据多。

大数据技术利用这些数据,以更快的速度和更好的逻辑清洗分析这些数据。以及通过一些算法,挖掘出这些庞杂数据中有价值的部分,为公司提供关系效益的新的隐蔽参数,并提供科学指导。

开源,就是开放源码,意味着免费和自由的进行二次开发,如当下最为广泛使用的hadoop生态系统。

问题五:该选择哪个开源数据库 关系型mysql

非关系型mongodb

问题六:数据源是什么意思 图表数据源(Data Source)是提供某种所需要数据的器件或原始媒体。信息系统的数据源必需可靠且具备更新能力,目前常用的数据源有:①观测数据,即现场获取的实测数据,它们包括野外实地勘测、量算数据,台站的观测记录数据,遥测数据等。②分析测定数据,即利用物理和化学方法分析测定的数据。③图形数据,各种地形图和专题地图等。④统计调查数据,各种类型的统计报表、社会调查数据等。⑤遥感数据,由地面、航空或航天遥感获得的数据。目前,中国的数据源数量庞大。如:全国范围的土地资源清查及详查数据,航空摄影测量图像和国土普查卫星资料已覆盖全国,定位、半定位观测站网遍布全国,有地面调查、地图测绘等大量数据。

上面提到的数据源例子只是很小一部分,事实上数据源可以是任何数据类型。

问题七:现在的开源图形数据库有哪些 首先是MariaDB,它是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者 Michael Widenius创办的公司所开发的免费开源的数据库服务器。与MySQL相比较,MariaDB更强的地方在于它拥有更多的引擎,包括Maria存储引擎、PBXT存储引擎、XtraDB存储引擎、FederatedX存储引擎,它能够更快的复制查询处理、运行的速度更快、更好的功能测试以及支持对Unicode的排序等。

其次是rcona,它为MySQL数据库服务器进行了改进,在功能和性能上较MySQL有着很显著的提升。该版本提升了在高负载情况下的InnoDB的性能,同时,它还为DBA提供一些非常有用的性能诊断工具,并且提供很多参数和命令来控制服务器行为。

第三是Percona Server,它使用了诸如google-mysql-tools、Proven Scaling和 Open Query对MySQL进行改造。并且,它只包含MySQL的服务器版,并没有提供相应对 MySQL的Connector和GUI工具进行改进。

问题八:该选择哪个开源数据库?哪一个更好 Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。Microsoft Access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃,表现为英文“Service Unavailable”。

MS SQL Server是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Microsoft Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。Microsoft SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。

MySql短小精悍,像access一样的文件型数据库,但比access强百倍,是真正多用户多任务的数据库系统,从Linux上移植过来的,安全性非常好,不过大部分操作是在dos下进行,虽然也有第三方开发的图形界面但并不好用。MySQL是跨多平台的数据库管理软件,可运行于LINUX、NT、UNIX等系统,可支持命令和图形化管理,对于一般的数据库足以应付了,占用系统资源较少,速度较快,而且是开源的。

Oracle各方面都比较成熟,但对硬件要求高,用于数据完整性、安全性要求较高的场合,能在所有主流平台上运行,完全支持所有的工业标准,采用完全开放策略。可以使客户选择最适合的解决方案,对开发商全力支持。平行服务器通过使一组结点共享同一簇中的工作来扩展服务器的能力,提供高可用性和高伸缩性的簇的解决方案,获得最高认证级别的iso标准认证,多层次网络计算,支持多种工业标准,可以用odbc,jdbc,oci等网络客户连接,较复杂,同时提供gui和命令行,在windows和unix下操作相同,如果windows不能满足需要,用户可以把数据库移到unix中。其操作和设置比较复杂,适用于有一定操作经验的用户。

db2 能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%。

总之,各个主流数据库各有优势与侧重,对于初学者而言,建议从MS SQL Server 着手学习,众所周知,微软的东西么,简单易懂。

问题九:该选择哪个开源数据库?哪一个更好 如果打算为项目选择一款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。MySQL与PostgreSQL都是免费、开源、强大、且功能丰富的数据库。你主要的问题可能是:哪一个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪一个开源数据库呢?

在选择数据库时,你所做的是个长期的决策,因为后面如果再改变决定将是非常困难且代价高昂的。你希望一开始就选择正确。两个流行的开源数据库MySQL与PostgreSQL常常成为最后要选择的产品。对这两个开源数据库的高层次概览将会有助于你选择最适合自己需要的。

MySQL

MySQL相对来说比较年轻,首度出现在1994年。它声称自己是最流行的开源数据库。MySQL就是LAMP(用于Web开发的软件包,包括Linux、Apache及Perl/PHP/Python)中的M。构建在LAMP栈之上的大多数应用都会使用MySQL,包括那些知名的应用,如WordPress、Drupal、Zend及phpBB等。

一开始,MySQL的设计目标是成为一个快速的Web服务器后端,使用快速的索引序列访问方法(ISAM),不支持ACID。经过早期快速的发展之后,MySQL开始支持更多的存储引擎,并通过InnoDB引擎实现了ACID。MySQL还支持其他存储引擎,提供了临时表的功能(使用MEMORY存储引擎),通过MyISAM引擎实现了高速读的数据库,此外还有其他的核心存储引擎与第三方引擎。

MySQL的文档非常丰富,有很多质量不错的免费参考手册、图书与在线文档,还有来自于Oracle和第三方厂商的培训与支持。

MySQL近几年经历了所有权的变更和一些颇具戏剧性的事件。它最初是由MySQL AB开发的,然后在2008年以10亿美金的价格卖给了Sun公司,Sun公司又在2010年被Oracle收购。Oracle支持MySQL的多个版本:Standard、Enterprise、Classic、Cluster、Embedded与munity。其中有一些是免费下载的,另外一些则是收费的。其核心代码基于GPL许可,对于那些不想使用GPL许可的开发者与厂商来说还有商业许可可供使用。

现在,基于最初的MySQL代码还有更多的数据库可供选择,因为几个核心的MySQL开发者已经发布了MySQL分支。最初的MySQL创建者之一Michael Monty Widenius貌似后悔将MySQL卖给了Sun公司,于是又开发了他自己的MySQL分支MariaDB,它是免费的,基于GPL许可。知名的MySQL开发者Brian Aker所创建的分支Drizzle对其进行了大量的改写,特别针对多CPU、云、网络应用与高并发进行了优化。

PostgreSQL

PostgreSQL标榜自己是世界上最先进的开源数据库。PostgreSQL的一些粉丝说它能与Oracle相媲美,而且没有那么昂贵的价格和傲慢的客服。它拥有很长的历史,最初是1985年在加利福尼亚大学伯克利分校开发的,作为Ingres数据库的后继。

PostgreSQL是完全由社区驱动的开源项目,由全世界超过1000名贡献者所维护。它提供了单个完整功能的版本,而不像MySQL那样提供了多个不同的社区版、商业版与企业版。PostgreSQL基于自由的BSD/MIT许可,组织可以使用、复制、修改和重新分发代码,只需要提供一个版权声明即可。

>>

问题十:EXCEL作图要带数据源是什么意思 就是你用excel画的图形,这个图是根据什埂数据生成的,这个数据必须附上。

你右键点击excel图的绘图区域,图表选项-数据表选项卡,勾选“显示数据表”前面的方框,就可以在你的绘图区域下显示源数据了。

或者你右键点击excel图的绘图区域,源数据-数据区域选项卡,看数据区域框中的数据地址,找到相应的地址,将里面的内容拷贝出来即可。

java操作Excel的一种方法:在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中jExcelAPI是一个韩国程序员的作品,虽然没有POI那样血统高贵,但是在使用过程中,感觉简单方便,对中文支持非常好,功能也比较强大。它的下载地址是: http://wwwandykhancom/jexcelapi/ 当前的最高版本是24。作者的网站上对它的特征有如下描述:

● 支持Excel 95-2000的所有版本

● 生成Excel 2000标准格式

● 支持字体、数字、日期操作

● 能够修饰单元格属性

● 支持图像和图表

搭建环境

将下载后的文件解包,得到jxljar,放入classpath,安装就完成了。

基本操作

一、创建文件

拟生成一个名为“测试数据xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:

代码(CreateXLSjava):

//生成Excel的类

import javaio;

import jxl;

import jxlwrite;

public class CreateXLS

{

public static void main(String args[])

{

try

{

//打开文件

WritableWorkbook book=

WorkbookcreateWorkbook(new File(“测试xls”));

//生成名为“第一页”的工作表,参数0表示这是第一页

WritableSheet sheet=bookcreateSheet(“第一页”,0);

//在Label对象的构造子中指名单元格位置是第一列第一行(0,0)

//以及单元格内容为test

Label label=new Label(0,0,”test”);

//将定义好的单元格添加到工作表中

sheetaddCell(label);

/生成一个保存数字的单元格

必须使用Number的完整包路径,否则有语法歧义

单元格位置是第二列,第一行,值为789123/

jxlwriteNumber number = new jxlwriteNumber(1,0,789123);

sheetaddCell(number);

//写入数据并关闭文件

bookwrite();

bookclose();

}catch(Exception e)

{

Systemoutprintln(e);

}

}

}

编译执行后,会在当前位置产生一个Excel文件。

三、读取文件

以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:

//读取Excel的类

import javaio;

import jxl;

public class ReadXLS

{

public static void main(String args[])

{

try

{

Workbook book=

WorkbookgetWorkbook(new File(“测试xls”));

//获得第一个工作表对象

Sheet sheet=bookgetSheet(0);

//得到第一列第一行的单元格

Cell cell1=sheetgetCell(0,0);

String result=cell1getContents();

Systemoutprintln(result);

bookclose();

}catch(Exception e)

{

Systemoutprintln(e);

}

}

}

程序执行结果:test

四、修改文件

利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:

//修改Excel的类,添加一个工作表

import javaio;

import jxl;

import jxlwrite;

public class UpdateXLS

{

public static void main(String args[])

{

try

{

//Excel获得文件

Workbook wb=WorkbookgetWorkbook(new File(“测试xls”));

//打开一个文件的副本,并且指定数据写回到原文件

WritableWorkbook book=

WorkbookcreateWorkbook(new File(“测试xls”),wb);

//添加一个工作表

WritableSheet sheet=bookcreateSheet(“第二页”,1);

sheetaddCell(new Label(0,0,”第二页的测试数据”));

bookwrite();

bookclose();

}catch(Exception e)

{

Systemoutprintln(e);

}

}

}

执行结果如图:

高级操作

一、 数据格式化

在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。

1、 字串格式化

字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句,为方便叙述,我们为每一行命令加了编号:

WritableFont font1=

new WritableFont(WritableFontTIMES,16,WritableFontBOLD); ①

WritableCellFormat format1=new WritableCellFormat(font1); ②

Label label=new Label(0,0,”data 4 test”,format1) ③

其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。

②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述。

③处使用了Label类的构造子,指定了字串被赋予那种格式。

在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们上面的实例,可以指定:

//把水平对齐方式指定为居中

format1setAlignment(jxlformatAlignmentCENTRE);

//把垂直对齐方式指定为居中

format1setVerticalAlignment(jxlformatVerticalAlignmentCENTRE);

二、单元格操作

Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

1、 合并单元格

WritableSheetmergeCells(int m,int n,int p,int q);

作用是从(m,n)到(p,q)的单元格全部合并,比如:

WritableSheet sheet=bookcreateSheet(“第一页”,0);

//合并第一列第一行到第六列第一行的所有单元格

sheetmergeCells(0,0,5,0);

合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。

2、 行高和列宽

WritableSheetsetRowView(int i,int height);

作用是指定第i+1行的高度,比如:

//将第一行的高度设为200

sheetsetRowView(0,200); 能够获取到java里面那么再封装保存进数据库也就简单了,希望这样可以帮到你。

首先,简道云应该不开源的。\x0d\其次,我看到很多人会下意识地推荐国内很多其他表单,比如主打问卷调研的问卷星,主打数据收集的金数据,主打联系人管理的麦客等等。\x0d\但简道云的主打方向跟上面这些表单显然不是一个方向的,简道云主要偏向数据管理与协作,一般用简道云的表单、报表、流程引擎能搭建轻量级的企业应用,而且操作方式基本是拖拽,不存在码代码这回事,函数跟Excel有点相似,用起来挺方便。\x0d\就国内市场,目前跟简道云完全定位一致的我还真没怎么看到,很多推荐的要不功能一样深但操作难,要不就是操作简单功能也差点火候,倒是国外一些做的不错的表单跟简道云的定位有点像,比如form什么的。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何用Apache POI读取Excel

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情