jxl 实用技巧(2)

jxl 实用技巧(2),第1张

// 数字的公式计算

Number n = new jxl write Number( )// A

sheet addCell(n)

n = new Number( )// B

sheet addCell(n)

NumberFormat dp = new NumberFormat( # ### )// 设置单元格里面的数字格式

WritableCellFormat dp cell = new WritableCellFormat(dp )

dp cell setWrap(true)

Formula f = new Formula( (a +b )/ dp cell)// 设置C 公式

sheet addCell(f)

f = new Formula( SUM(A :B ) dp cell)// 设置D 公式

sheet addCell(f)

// 设置sheet的样式

sheet getSettings() setProtected(true)// 设置xls的保护 单元格为只读的

sheet getSettings() setPassword( )// 设置xls的密码

sheet getSettings() setDefaultColumnWidth( )// 设置列的默认宽度 cm左右

sheet setRowView( )// 设置第 行高度

sheet setRowView( false)// 这样可以自动把行高扩展

sheet setColumnView( )// 设置第 列宽度 cm左右

rgeCells( )// 合并单元格 合并A B 也就是 列 行 与 列 行之间的矩形

// 设置边框

drawRect(sheet BorderLineStyle THICK Colour BLACK null)

rgeCells( )

wwb write()

wwb close()

os close()

}

public static void drawRect(WritableSheet sheet int x int y int width

int height BorderLineStyle style Colour BorderColor

Colour bgColor) throws WriteException {

for (int w = w <widthw++) {

for (int h = h <heighth++) {

WritableCellFormat alignStyle = new WritableCellFormat()// 单元格样式

alignStyle setAlignment(Alignment CENTRE)// 设置对齐方式

alignStyle setVerticalAlignment(VerticalAlignment CENTRE)// 设置对齐方式

if (h == )// 画上

alignStyle setBorder(Border TOP style BorderColor)// 设置边框的颜色和样式

if (w == )// 画左

alignStyle setBorder(Border LEFT style BorderColor)// 设置边框的颜色和样式

if (w == width )// 画右

alignStyle setBorder(Border RIGHT style BorderColor)// 设置边框的颜色和样式

if (h == height )// 画下

alignStyle setBorder(Border BOTTOM style BorderColor)// 设置边框的颜色和样式

// drawLine(sheet x y Border BOTTOM)

if (bgColor != null)

alignStyle setBackground(bgColor)// 背静色

Label mergelabel = new Label(x y alignStyle)

// topleftXIndex topleftYIndex bottomRightXIndex

// bottomRightYIndex

// rgeCells( )

sheet addCell(mergelabel)

y++

}

y = height

x++

}

}

public static ArrayList<String>sampleReadExcel(File inputFile

int inputFileSheetIndex) throws Exception {

ArrayList<String>list = new ArrayList<String>()

Workbook book = null

Cell cell = null

// 避免乱码的设置

WorkbookSettings setting = new WorkbookSettings()

java util Locale locale = new java util Locale( zh CN )

setting setLocale(locale)

setting setEncoding( ISO )

book = Workbook getWorkbook(inputFile setting)

Sheet sheet = book getSheet(inputFileSheetIndex)

for (int rowIndex = rowIndex <sheet getRows()rowIndex++) {// Excel第一行为表头 因此J初值设为

for (int colIndex = colIndex <sheet getColumns()colIndex++) {// 只需从Excel中取出 列

cell = sheet getCell(colIndex rowIndex)

list add(cell getContents())

}

}

// 【问题 如果在实际部署的时候没有写下面这句是否会导致不断消耗掉服务器的内存?jxl里面有个ReadWrite java没有关闭读的 只关闭了写的】

book close()

return list

}

public static void setCellValueDirectly(WritableSheet sheet Cell cell

Object newValue CellType type) throws Exception {

if (type == CellType DATE || type == CellType DATE_FORMULA) {

sheet addCell(new jxl write DateTime(cell getColumn() cell

getRow() (Date) newValue

new jxl write WritableCellFormat(cell getCellFormat())))

} else if (type == CellType NUMBER || type == CellType NUMBER_FORMULA) {

sheet addCell(new jxl write Number(cell getColumn() cell getRow()

((Double) newValue) doublue()

new jxl write WritableCellFormat(cell getCellFormat())))

} else if (type == CellType LABEL || type == CellType STRING_FORMULA) {

sheet addCell(new Label(cell getColumn() cell getRow()

(String) newValue new jxl write WritableCellFormat(cell

getCellFormat())))

} else {

throw new Exception( 不支持的其它单元格类型 + type)

// System err println( 不支持的其它单元格类型 + cell getType() + at +

// cell getColumn() + + cell getRow() + current content: +

// cell getContents())

}

}

lishixinzhi/Article/program/Java/hx/201311/25570

一、创建文件

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

package com.luqin.jxl

import java.io.File

import jxl.Workbook

import jxl.format.UnderlineStyle

import jxl.write.Font

import jxl.write.Label

import jxl.write.WritableFont

import jxl.write.WritableSheet

import jxl.write.WritableWorkbook

/**

 * 创建Excel简单实例

 * 

 * @author luqin * @version

 * @time 2012-6-20 上午11:12:02

 * 

 */

public class CreateExcel {

 public static void main(String[] args) {

  String excelName = "table.xls"

  try {

   File excelFile = new File(excelName)

   // 如果文件存在就删除它

   if (excelFile.exists())

    excelFile.delete()

   // 打开文件

   WritableWorkbook book = Workbook.createWorkbook(excelFile)

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

   WritableSheet sheet = book.createSheet(" 第一页 ", 0)

   // 合并单元格

   sheet.mergeCells(5, 5, 6, 6)

   // 文字样式

   jxl.write.WritableFont wfc = new jxl.write.WritableFont(

     WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,

     UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED)

   jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(

     wfc)

   // 设置单元格样式

   wcfFC.setBackground(jxl.format.Colour.GRAY_25)// 单元格颜色

   wcfFC.setAlignment(jxl.format.Alignment.CENTRE)// 单元格居中

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

   // 以及单元格内容为

   Label label = new Label(0, 0, "Head1", wcfFC)

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

   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()

   System.out.println("Excel创建成功")

  } 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)

        } 

    } 

程序执行结果: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)

        } 

    } 

其他 *** 作

一、 数据格式化

在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)

二、单元格 *** 作

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 )

 

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

2、 行高和列宽

WritableSheet.setRowView(inti,intheight)

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

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

sheet.setRowView(0,200)

WritableSheet.setColumnView(inti,intwidth)

//作用是指定第i+1列的宽度,比如:

//将第一列的宽度设为30

sheet.setColumnView(0,30)

jExcelAPI还有其他的一些功能,比如插入图片等,这里就不再一一介绍,读者可以自己探索。

其中:如果读一个excel,需要知道它有多少行和多少列,如下 *** 作:

Workbookbook=Workbook.getWorkbook(newFile(" 测试1.xls "))

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

Sheetsheet=book.getSheet(0)

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

intcolumnum=sheet.getColumns()//得到列数

intrownum=sheet.getRows()//得到行数

System.out.println(columnum)

System.out.println(rownum)

for(inti =0i < rownumi++)//循环进行读写 

{

for(intj =0j < columnumj++){

Cellcell1=sheet.getCell(j,i)

Stringresult=cell1.getContents()

System.out.print(result)

System.out.print("\t")

}

System.out.println()

}

book.close()

手机上导出不了,需要在电脑上 *** 作,具体 *** 作步骤如下:

1.首先,在网页上找到问卷星的官方网站并打开;

2 . 在登录页面上输入帐户密码后点击登录;

3 . 进入“问卷星”的主页时,将显示创建的问卷。 在调查表下,找到“分析下载”选项;

4.单击“分析下载”选项,然后在出现的选择栏中选择“查看下载答题”。

5.接着,右上角有一个“下载答题数据”按钮,单击下拉菜单选择“按文本下载选项”;

6.在d出窗口中, 设置文件名和保存路径后,单击“下载”;

7.这样,可以看到文件数据已导出为excel格式文件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7748159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存