`
aa860326
  • 浏览: 96549 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSP 页面使用JXL读取excel

    博客分类:
  • J2EE
阅读更多

1、index.jsp页面
<body>
  <form action="excel_view.jsp" method="post">
    <input type="file" name="filepath">
    <input type="submit" name="submit" value="提交">
  </form>
  </body>
----------------------------------------------------------------------
2、excel_view.jsp页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page import="java.io.*" %>
<%@ page import="jxl.Cell"%>
<%@ page import="jxl.CellType"%>
<%@ page import="jxl.Sheet"%>
<%@ page import="jxl.Workbook"%>
<%@ page import="jxl.read.biff.BiffException"%>
<%@ page import="com.method.CellStyle" %>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>查看excel文件</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<%
request.setCharacterEncoding("UTF-8");
try {
InputStream is = new FileInputStream(request.getParameter("filepath"));
Workbook read_workbook = Workbook.getWorkbook(is);
Sheet sheet = read_workbook.getSheet(0);
CellStyle cell_style = new CellStyle();
int rows = sheet.getRows();
int columns = sheet.getColumns();
int rowspan = 0;
int colspan = 0;
out.print("<table border='1' cellpadding='0' cellspacing='0' style='font-size: 12px;border-collapse:collapse' bordercolor='#000000'>");
for (int i = 0; i < rows; i++) {
out.print("<tr>");
for (int j = 0; j < columns ; j++) {
Cell cell = sheet.getCell(j, i);
cell_style.ReadRange(sheet,i,j);
rowspan = cell_style.getRowspan();
colspan = cell_style.getColspan();
String contents = null;
if(cell.getType() == CellType.EMPTY){
cell_style.setBetweenRowColumn(i,j);
int min_row = cell_style.getMin_row();
int max_row = cell_style.getMax_row();
int min_col = cell_style.getMin_column();
int max_col = cell_style.getMax_column();
if( min_row < i && i <= max_row && min_col <= j && j<= max_col){
j = max_col;
continue;
}
contents = "&nbsp;";
out.print("<td width='"+(40*colspan)+"' rowspan='"+rowspan+"' colspan='"+colspan+"'>"+contents+"</td>");
j += colspan-1;
continue;
} else {
contents = cell.getContents();
out.print("<td align='center'"
+"rowspan='"+rowspan+"'"
+"colspan='"+colspan+"'"
+"bGcolor='"+cell_style.getBgcolor(cell)+"'"
//+" height='"+sheet.getSettings().getDefaultRowHeight()+"'"
+"height='25'"
+" width='"+(60*colspan)+"'>"
+"<Font color='"+cell_style.getFontColor(cell)+"'"
//+"size='"+cell.getCellFormat().getFont().getPointSize()+"'"
+"face='"+cell.getCellFormat().getFont().getName()+"'"
+">"+contents+"</Font></td>");
j += colspan-1;
continue;
}
}
out.print("</tr>");
}
read_workbook.close();
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
%>
</body>
</html>
----------------------------------------------------------------------
3、CellStyle.java
package com.method;

import jxl.Cell;
import jxl.Range;
import jxl.Sheet;

/**
* 获取Excel 里被合并单元格的样式
* @author JinYunHe
*
*/
public class CellStyle {
private int topleft_row ; //起始行
private int topleft_column; //起始列
private int bottomright_row = 0; //终止行
private int bottomright_column = 0; //终止列
private int rowspan = 1; //行
private int colspan = 1; //列
private Range[] ranges = null; //合并单元格集合
private int min_row ; //最小行
private int max_row ; //最大行
private int min_column; //最小列
private int max_column; //最大列
/**
* 获取本sheet里合并单元格的集合
* @param sheet
*/
public void ReadRange(Sheet sheet,int row,int column){
ranges = sheet.getMergedCells();
for(Range space:ranges){

//System.out.print(space.getTopLeft().getRow()+"行,");
    //System.out.print(space.getTopLeft().getColumn()+"列\t");
    //System.out.print(space.getBottomRight().getRow()+"行,");
    //System.out.print(space.getBottomRight().getColumn()+"列\n");
    //System.out.println("\n-------------------------");
    ///*
this.topleft_row = space.getTopLeft().getRow();
this.topleft_column = space.getTopLeft().getColumn();
if(row != topleft_row || column != topleft_column){
this.setRowspan(1);
this.setColspan(1);
}
if(row == topleft_row && column == topleft_column){
this.setTopleft_row(this.topleft_row);
this.setTopleft_column(this.topleft_column);
this.setBottomright_row(space.getBottomRight().getRow());
this.setBottomright_column(space.getBottomRight().getColumn());
this.setRowspan(2);
this.setColspan(2);
break;
}
//*/
}
//System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxx");
}
/**
*
* @return
*/
public void setBetweenRowColumn(int row ,int column){
for(Range space:ranges){
//获取行的范围
int min_row = space.getTopLeft().getRow(); // min row
int max_row = space.getBottomRight().getRow(); // max row
int min_column = space.getTopLeft().getColumn(); // min column
int max_column = space.getBottomRight().getColumn(); // max column
if(min_row <= row
&& row <= max_row){
//获取列的范围
if(min_column <= column
&& column <= max_column){
this.setMin_row(min_row); // min row
this.setMax_row(max_row); // max row
this.setMin_column(min_column); // min column
this.setMax_column(max_column); // max column
break;
}
}
}
}
/**
* 获取背景颜色的值
* @param cell: 当前单元格
* @return
*/
public String getBgcolor(Cell cell){
int r = cell.getCellFormat().getBackgroundColour().getDefaultRGB().getRed();
int g = cell.getCellFormat().getBackgroundColour().getDefaultRGB().getGreen();
int b = cell.getCellFormat().getBackgroundColour().getDefaultRGB().getBlue();
return "#"+Integer.toHexString(r<<16|g<<8|b);
}
/**
* 获取字体的颜色
* @param cell: 当前单元格
* @return
*/
public String getFontColor(Cell cell){
int r = cell.getCellFormat().getFont().getColour().getDefaultRGB().getRed();
int g = cell.getCellFormat().getFont().getColour().getDefaultRGB().getGreen();
int b = cell.getCellFormat().getFont().getColour().getDefaultRGB().getBlue();
return "#"+Integer.toHexString(r<<16|g<<8|b);
}
public int getTopleft_row() {
return topleft_row;
}
public void setTopleft_row(int topleft_row) {
this.topleft_row = topleft_row;
}
public int getTopleft_column() {
return topleft_column;
}
public void setTopleft_column(int topleft_column) {
this.topleft_column = topleft_column;
}
public int getBottomright_row() {
return bottomright_row;
}
public void setBottomright_row(int bottomright_row) {
this.bottomright_row = bottomright_row;
}
public int getBottomright_column() {
return bottomright_column;
}
public void setBottomright_column(int bottomright_column) {
this.bottomright_column = bottomright_column;
}
public int getRowspan() {
return rowspan;
}
public void setRowspan(int rowspan) {
// rowspan :1 表示无; 2 表示有;
if(rowspan == 1){
this.rowspan = 1;
}
if(rowspan == 2){
this.rowspan =  this.getBottomright_row() - this.getTopleft_row() +1;
}
}
public int getColspan() {
return colspan;
}
public void setColspan(int colspan) {
// colspan :1 表示无; 2 表示有;
if(colspan == 1){
this.colspan = 1;
}
if(colspan == 2){
this.colspan =  this.getBottomright_column() - this.getTopleft_column() +1;
}
}
//------------------------获取所合并的单元格的的所表示范围的行和列-----------
public Range[] getRanges() {
return ranges;
}
public void setRanges(Range[] ranges) {
this.ranges = ranges;
}
public int getMin_row() {
return min_row;
}
public void setMin_row(int min_row) {
this.min_row = min_row;
}
public int getMax_row() {
return max_row;
}
public void setMax_row(int max_row) {
this.max_row = max_row;
}
public int getMin_column() {
return min_column;
}
public void setMin_column(int min_column) {
this.min_column = min_column;
}
public int getMax_column() {
return max_column;
}
public void setMax_column(int max_column) {
this.max_column = max_column;
}
}

注: 这个例子虽能把excel里的数据输出到jsp页面上,但还不够完美: 还未实现读公式,布尔型等类型的值,同时字体大小不能很好的控制。字体颜色、单元格的背景色,都是通过计算得出的(*_o只因不会直接使用Colour 这个类。),同时代码也比较烦琐,希望有兴趣的高手,帮忙修改,先谢谢了!

分享到:
评论

相关推荐

    jsp中jxl读取excel表数据

    在jsp中用Java读取Excel中的数据,以便把该数据写入数据库或jsp页面,对Excel导入很有帮助

    java使用jxl打印excel报表文件

    JXL库是一个广泛使用的Java库,它允许开发者读取、写入和修改Excel文件。本篇将深入探讨如何使用JXL库在Java中打印Excel报表。 首先,要使用JXL库,你需要在项目中引入它的依赖。在本例中,`jxl.jar`是JXL库的核心...

    jsp+jspsmart上传+poi3.8读取excel2007+jxl读取excel2003

    在给定的标题和描述中,"jsp+jspsmart上传+poi3.8读取excel2007+jxl读取excel2003" 提到了一种结合Java Web技术实现文件上传,并通过不同库解析Excel文件的解决方案。这里我们将详细探讨涉及的各个知识点。 首先,`...

    JXL(Java操作Excel文件Oracle数据库)

    以下是一个简单的示例,展示如何使用JXL读取Excel文件: ```java import jxl.*; public class ExcelReader { public static void main(String[] args) { try { Workbook workbook = Workbook.getWorkbook(new ...

    jxl模版生成excel

    6. **读取Excel**:除了生成Excel文件,jxl还可以读取已有的Excel文件,将其内容转化为Java数据结构,便于处理和分析。 7. **示例代码**:通常,使用jxl的流程包括加载模板文件,找到要填充的单元格,使用`Cell....

    利用jxl把excel中的数据导入数据库

    标题“利用jxl把excel中的数据导入数据库”指的是使用Java Excel API(jxl)这个库来读取Excel文件中的数据,并将这些数据批量地导入到关系型数据库中。这是一个常见的需求,特别是在处理大量结构化数据时,例如进行...

    JXL导出Excel数据表

    JXL(Java Excel API)是一个开源项目,它允许Java程序创建、修改和读取Excel文件。通过这个库,我们可以方便地在程序中动态生成Excel工作表,包括设置单元格格式、添加公式以及处理图像等复杂操作。在描述中提到的...

    jxl用于读取Excel的Java类(个人总结综合教程,适合新入门的朋友阅读)

    ### jxl库在Java中用于读取Excel的关键知识点解析 #### 一、jxl库简介与功能 jxl是Java Excel API的一个实现,主要用于在Java应用程序中读取和写入Microsoft Excel工作簿。该库提供了丰富的API来处理Excel文档,...

    利用Jxl生成excel文件

    - 遍历读取Excel文件:Jxl也支持读取Excel文件,我们可以创建`Workbook`对象,遍历`Worksheet`,读取每个单元格的数据。 - 错误处理:在生成文件过程中,可能会遇到各种错误,如文件不存在、权限问题等,因此需要...

    javaScript导入excel(jxl)

    #### 使用jxl读取Excel文件 接下来,我们详细分析给出的部分内容,了解如何使用jxl来读取Excel文件。 ```java ;charset=gb2312" language="java"%&gt; *"%&gt; &lt;%@page import="jxl.*"%&gt; &lt;%@page import="jxl.write.*"%&gt;...

    mvc,jxl中导出excel在jsp页面中

    总的来说,这个示例展示了如何在Spring MVC环境中,结合jxl库实现在JSP页面上提供一个导出Excel文件的功能。用户点击链接,后端服务将查询到的数据转换为Excel格式并提供下载。这种方法在需要将大量数据呈现给用户...

    JXL使用模板通过el表达式生成excel文件

    JXL(Java Excel API)是一个开源的Java库,专门用于读取、写入和修改Microsoft Excel文件。它支持多种操作,包括创建新的Excel工作簿,读取现有的工作簿,修改单元格内容,以及设置样式等。JXL库因其简单易用的API...

    JSP_通过Servlet将excel数据导入SQL

    在本例中,我们使用 jxl.jar 库来读取 Excel 文件中的数据。 3. Excel 文件的准备 在本例中,我们需要准备一个 Excel 文件,其中包含要导入到数据库的数据。 4. 数据库的建表 在本例中,我们使用 SQL Server ...

    excel 通过jsp上传到数据库

    1. **读取Excel文件**:使用`jxl`库的`Workbook`类来读取Excel文件。代码首先创建一个`Workbook`实例,然后获取第一个工作表(`sheet.getSheet(0)`)。 2. **解析Excel数据**:遍历Excel的行和列,使用`getCell()`...

    读取excel表数据代码!

    使用JXL库读取Excel文件 #### 1.1 库简介 - **JXL (Java Excel API)**:这是一个用于读写Microsoft Excel文件的Java库。它提供了简单易用的API来处理Excel文件,支持多种格式,包括.xls。 - **适用范围**:适用于...

    java操作excel,jxl边框的设置,jxl单元格的设置

    `JXL`库是一个广泛使用的Java库,它允许开发者读取和写入Microsoft Excel格式的文件。本文将深入探讨如何使用JXL进行Excel操作,特别是关于边框设置和单元格设置的细节。 首先,要使用JXL,需要将其添加到项目依赖...

    jsp导excel到mysql数据库.docx

    jsp导excel到mysql数据库 jsp是一种服务器端脚本语言,通过jsp可以实现excel文件的上传和解析,并将数据导入到mysql数据库中。...方法一使用jxl库来读取excel文件,而方法二使用jsp上传excel文件并连接mysql数据库。

    jxl.jar和jxl.api文档及使用方法

    此外,还包含了使用jxl.jar的方法和示例,以及如何将数据从JSP页面导出到MySQL数据库的步骤,这为实际应用提供了实践指导。 **JExcelAPI介绍** JExcelAPI是一个开源的Java库,最初由Nicolaas Weideman创建,用于...

Global site tag (gtag.js) - Google Analytics