b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

从愚蠢到菜鸟的Java程序员(105)Java操作系统和pdf文件(3

电脑杂谈  发布时间:2020-05-25 06:17:16  来源:网络整理

jxl excel 合并单元格_jxl 动态合并单元格_jxl 合并单元格

在上一个博客中,我们介绍了使用Apache开源项目POI将数据导出到excel报告的知识. 实际上,在Java世界中,有两套成熟的开源工具支持Excel文件的操作: 一种是ApachePOI;另一种是ApachePOI. 另一个是本文将介绍的JavaExcelAPI. ApachePOI是Apache Software Foundation的开源库. POI为Java程序提供API,以读取/写入Microsoft Office格式的文件. 该项目分为几个组件,包括HSSF组件,这是一个非常正式且严格的API. 使用HSSF,您可以使用纯Java代码读取,写入和修改Excel文件. JavaExcelAPI(JXL),这是一组完全用Java开发的Excel表操作组件. 使用它,即使在非Windows操作系统下,程序员也可以通过纯Java应用程序创建Excel文件,并且可以在Excel中进行读写,更新内容,因此,基于JXL可以实现在中导入和导出数据的操作. 与POI相比,JXL的内存占用更少,并且对中文的支持更好,因此在本文中,我们将研究基于JXL的数据导入和导出方法. 顺便介绍一下jxl和POI之间的区别. 实际上,原则上,个人认为这两种方法非常相似,甚至代码也非常相似. 让我们看一下简单的操作步骤.

jxl下载地址:

基本步骤:

1. 创建工作簿

WritableWorkbookbook = Workbook.createWorkbook(newFile(“ Test.xls”));

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

WritableSheetsheet = book.createSheet(“第一页”,0);

3. 创建一个单元格. 在Label对象的构造方法中,指示单元格位置为第一列和第一行(0,0),单元格内容为test

Labellabel = newLabel(0,0,“ test”);

4. 将定义的单元格添加到工作表中

sheet.addCell(标签);

Jxl提供了一个专门创建的数字类型单元格. 要生成数字存储单元,必须使用数字的完整打包路径. 否则,语法有歧义的单元格的位置是第二列,第一行,值是123.123 * /

jxl.write.Numbernumber = newjxl.write.Number(1,0,123.123); sheet.addCell(number);

jxl excel 合并单元格_jxl 合并单元格_jxl 动态合并单元格

5. 写入数据并关闭文件

book.write();

book.close();

有关Excle的一些操作:

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中有一个详细列表jxl 合并单元格,在此不再列出.

②此处的代码使用WritableCellFormat类,该类非常重要,通过它可以指定各种单元格

jxl 合并单元格_jxl 动态合并单元格_jxl excel 合并单元格

属性,以下单元格格式将有更多描述.

③Label类构造函数用于指定字符串的格式.

在WritableCellFormat类中,还有另一个非常重要的方法是指定数据对齐方式,例如对于我们来说

可以指定以上示例:

//将水平对齐方式指定为中心

format1.setAlignment(jxl.format.Alignment.CENTRE);

//将垂直对齐方式指定为中心

format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

2. 单元格操作

Excel的一个非常重要的部分是单元格的操作jxl 合并单元格,例如行高,列宽,单元格合并等. 幸运的是,jExcelAPI

提供了这些支持. 这些操作相对简单. 下面仅介绍相关的API.

1),合并单元格

WritableSheet.mergeCells(intm,intn,intp,intq);

jxl 动态合并单元格_jxl excel 合并单元格_jxl 合并单元格

//该功能是合并从(m,n)到(p,q)的所有单元格,例如:

WritableSheetsheet = book.createSheet(“第一页”,0);

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

sheet.mergeCells(0,0,5,0);

合并可以是水平的也可以是垂直的. 合并的单元格无法再次合并,否则将触发异常.

2),行高和列宽

WritableSheet.setRowView(inti,intheight);

//该功能用于指定i + 1行的高度,例如:

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

sheet.setRowView(0,200);

WritableSheet.setColumnView(int,intwidth);

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

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

jxl excel 合并单元格_jxl 动态合并单元格_jxl 合并单元格

sheet.setColumnView(0,30);

jxl还具有其他功能,例如插入图片等,这里我不会一一介绍,读者可以自己探索.

POI和jxl之间的区别:

JVM虚拟机的内存消耗.

数据量为3000条数据,每条有60列. JVM虚拟机的内存大小为64M.

使用POI: 当其运行到大约2800时,它将报告内存溢出.

使用JXL: 总共有3000项存储,而内存仍然有21M的空间.

可以想象,内存消耗的差距仍然很大.

也许是因为JXL在资源回收方面做得很好.

从提供的功能来看

JXL相对较弱. 它不提供像POI这样复杂的功能,例如添加图片. 因此,如果要实现的功能比较复杂,则可以考虑使用POI

最后看一个小例子:

import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class DateToExcel {  private String driverClass = "com.mysql.jdbc.Driver";  private String url = "jdbc:MySQL://localhost/boutiquecourse";  private String user = "root";  private String password = "";  private Connection connection;  public void exportCla***oom(OutputStream os) {   try {    WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件    WritableSheet wsheet = wbook.createSheet("测试转换", 0); // 工作表名称    //设置Excel字体    WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,     WritableFont.BOLD, false,    jxl.format.UnderlineStyle.NO_UNDERLINE,    jxl.format.Colour.BLACK);    WritableCellFormat titleFormat = new WritableCellFormat(wfont);        String[] title = { "测试编号", "测试名称"};//如果还有字段的话,以此类推    // 设置Excel表头    for (int i = 0; i < title.length; i++) {     Label excelTitle = new Label(i, 0, title[i], titleFormat);     wsheet.addCell(excelTitle);    }    int c = 1; // 用于循环时Excel的行号    Connection con = openConnection();    Statement st = con.createStatement();    String sql = "select * from test";    ResultSet rs = st.executeQuery(sql); // 这个是从中取得要导出的数据    while (rs.next()) {     Label content1 = new Label(0, c, (String) rs.getString("testid"));     Label content2 = new Label(1, c, (String) rs.getString("testname"));     //如果还有的话,以此类推     wsheet.addCell(content1);     wsheet.addCell(content2);     //如果还有的话,以此类推     c++;    }    wbook.write(); // 写入文件    wbook.close();    os.close();    System.out.println("导入成功!");   } catch (Exception e) {    e.printStackTrace();   }  }  public Connection openConnection() throws SQLException {   try {    Class.forName(driverClass).newInstance();    connection = DriverManager.getConnection(url, user, password);    return connection;   } catch (Exception e) {    throw new SQLException(e.getMessage());   }  }  public void closeConnection() {   try {    if (connection != null)     connection.close();   } catch (Exception e) {    e.printStackTrace();   }  }  public static void main(String[] args) {   DateToExcel te = new DateToExcel();   File f = new File("D:/kk.xls");   //File f = new File("D:\\kk.xls");   try {    f.createNewFile();    OutputStream os = new FileOutputStream(f);    te.exportCla***oom(os);   } catch (Exception e) {    e.printStackTrace();   }  } }

参考: 百度百科: jxl.jar


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-221387-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...