「java获取电子表格列宽」java导出excel设置列宽

博主:adminadmin 2023-01-28 04:24:10 289

本篇文章给大家谈谈java获取电子表格列宽,以及java导出excel设置列宽对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

从excel表格读取数据用Java代码实现批量上传写入数据库

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

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

● 生成Excel 2000标准格式

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

● 能够修饰单元格属性

● 支持图像和图表

搭建环境

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

基本操作

一、创建文件

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

代码(CreateXLS.java):

//生成Excel的类

import java.io.*;

import jxl.*;

import jxl.write.*;

public class CreateXLS

{

public static void main(String args[])

{

try

{

//打开文件

WritableWorkbook book=

Workbook.createWorkbook(new File(“测试.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,789.123);

sheet.addCell(number);

//写入数据并关闭文件

book.write();

book.close();

}catch(Exception e)

{

System.out.println(e);

}

}

}

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

三、读取文件

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

//读取Excel的类

import java.io.*;

import jxl.*;

public class ReadXLS

{

public static void main(String args[])

{

try

{

Workbook book=

Workbook.getWorkbook(new File(“测试.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文件中添加一个工作表:

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

import java.io.*;

import jxl.*;

import jxl.write.*;

public class UpdateXLS

{

public static void main(String args[])

{

try

{

//Excel获得文件

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

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

WritableWorkbook book=

Workbook.createWorkbook(new File(“测试.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(int i,int height);

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

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

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

利用java怎么实现生成报表(Excel文件)

这是从Tabel导出数据到Excel的一个例子:jxl.jar包你可以去网上找,有很多资源,如果没找到,也可以留个邮箱,我发给你

import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import javax.swing.JOptionPane;

import javax.swing.JTable;

import jxl.Workbook;

import jxl.format.Alignment;

import jxl.format.Colour;

import jxl.format.UnderlineStyle;

import jxl.format.VerticalAlignment;

import jxl.read.biff.BiffException;

import jxl.write.Label;

import jxl.write.WritableCellFormat;

import jxl.write.WritableFont;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

public class TableToExcel {

public static void export(File file,String heading,String note,JTable table) {

WritableWorkbook workbook = null;// 创建工作薄

try {

if(file.exists()) {//如果文件存在

workbook = Workbook.createWorkbook(file, Workbook.getWorkbook(file));

} else {//如果文件不存在

workbook = Workbook.createWorkbook(file);

}

// 创建工作表

WritableSheet sheet = workbook.createSheet(heading, workbook.getNumberOfSheets());

//获取jtable 的行数和列数

int rowNum = table.getRowCount();

int colNum = table.getColumnCount();

fillHeader(sheet,heading,colNum);//填写主标题

fillColName(sheet,table,colNum);//填写列名

fillCell(sheet,table,colNum,rowNum);// 填写数据

fillNote(sheet,note,colNum,rowNum);//填写签名档

workbook.write();//写入数据

workbook.close();//关闭

} catch (IOException e) {

JOptionPane.showMessageDialog(null, "导入数据前请关闭工作表");

} catch (BiffException e) {

e.printStackTrace();

} catch (WriteException e) {

e.printStackTrace();

}

}

/**

* 填写 表标题

* @param sheet

* @param heading

* @param colNum

* @throws WriteException

*/

private static void fillHeader(WritableSheet sheet,String heading,int colNum) throws WriteException {

WritableFont font = new WritableFont(WritableFont.ARIAL, 18, WritableFont.BOLD,false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);//设置字体

WritableCellFormat format = new WritableCellFormat(font);//新建格式化对象

format.setAlignment(Alignment.CENTRE);//设置水平居中对齐

format.setVerticalAlignment(VerticalAlignment.CENTRE);//设置垂直居中对齐

sheet.mergeCells(0,0, colNum-1, 0);//合并单元格

sheet.setRowView(0, 600); // 设置行高

sheet.addCell(new Label(0,0,heading,format));//填写主标题

}

/**

* 填写列名

* @param sheet

* @param table

* @param colNum

* @throws WriteException

*/

private static void fillColName(WritableSheet sheet,JTable table,int colNum) throws WriteException {

WritableFont font = new WritableFont(WritableFont.ARIAL,12,WritableFont.NO_BOLD);//设置字体

WritableCellFormat format = new WritableCellFormat(font);//新建格式化对象

format.setAlignment(Alignment.CENTRE);//设置水平居中对齐

sheet.setColumnView(0, 15);// 设置列宽

for(int col = 0; col colNum;col++) {

Label colName = new Label(col,1,table.getModel().getColumnName(col),format);

sheet.addCell(colName);

}

}

/**

* 填写表格数据到excel

* @param sheet

* @param table

* @param colNum

* @param rowNum

* @throws WriteException

*/

private static void fillCell(WritableSheet sheet,JTable table,int colNum,int rowNum) throws WriteException {

WritableFont font = new WritableFont(WritableFont.ARIAL,12,WritableFont.NO_BOLD);//设置字体

WritableCellFormat format = new WritableCellFormat(font);//新建格式化对象

format.setAlignment(Alignment.CENTRE);//设置水平居中

for(int col = 0;col colNum;col++) {

for(int row = 1;row = rowNum -1;row++) {//填写数据

String value = "";

if(table.getModel().getValueAt(row -1, col) != null)

value = table.getModel().getValueAt(row -1, col).toString();

sheet.addCell(new Label(col,row + 1,value));

}

}

}

/**

* 填写 签名档

* @param sheet

* @param inscribe

* @param colNum

* @param rowNum

* @throws WriteException

*/

private static void fillNote(WritableSheet sheet,String inscribe,int colNum,int rowNum) throws WriteException {

if( inscribe == null || inscribe.length() 1 ) {

inscribe = "导出时间: "+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

}

WritableFont font = new WritableFont(WritableFont.ARIAL, 9, WritableFont.NO_BOLD,

false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);// 定义字体

WritableCellFormat format = new WritableCellFormat(font);// 定义格式化对象

format.setAlignment(Alignment.RIGHT);// 水平居中显示

sheet.mergeCells(0, rowNum+3, colNum - 1, rowNum+3);// 合并单元格

sheet.addCell(new Label(0, rowNum+3, inscribe, format));// 填写工作表

}

}

java 利用GridBagLayout布局时,如何设置单列列宽?

package JavaGUI;

import java.awt.EventQueue;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.awt.Insets;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import javax.swing.UIManager;

public class GridBagLayoutDemo extends JFrame {

/**

*

*/

private static final long serialVersionUID = -4481121176026056530L;

private JPanel contentPane;

/**

* Launch the application.

*/

public static void main(String[] args) {

try {

UIManager

.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

} catch (Throwable e) {

e.printStackTrace();

}

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

GridBagLayoutDemo frame = new GridBagLayoutDemo();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*/

public GridBagLayoutDemo() {

setTitle("网格组布局");// 设置窗体的标题

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗体退出时操作

setBounds(100, 100, 450, 200);// 设置窗体位置和大小

contentPane = new JPanel();// 创建内容面板

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));// 设置面板的边框

setContentPane(contentPane);// 应用内容面板

GridBagLayout gbl_contentPane = new GridBagLayout();// 创建网格组布局

contentPane.setLayout(gbl_contentPane);// 使用网格组布局

JButton button1 = new JButton("A");// 创建按钮

GridBagConstraints gbc_button1 = new GridBagConstraints();// 创建网格组布局约束条件

gbc_button1.insets = new Insets(0, 0, 5, 5);// 设置控件的空白

gbc_button1.fill = GridBagConstraints.HORIZONTAL;// 设置填充方式

gbc_button1.weightx = 10.0;// 第一列的分布方式为10%

gbc_button1.gridx = 0;// 起始点为第1列

gbc_button1.gridy = 0;// 起始点为第1行

contentPane.add(button1, gbc_button1);// 增加按钮及其约束条件

JButton button2 = new JButton("B");// 创建按钮

GridBagConstraints gbc_button2 = new GridBagConstraints();// 创建网格组布局约束条件

gbc_button2.insets = new Insets(0, 5, 5, 5);// 设置控件的空白

gbc_button2.fill = GridBagConstraints.HORIZONTAL;// 设置填充方式

gbc_button2.weightx = 20.0;// 第一列的分布方式为20%

gbc_button2.gridx = 1;// 起始点为第2列

gbc_button2.gridy = 0;// 起始点为第1行

contentPane.add(button2, gbc_button2);// 增加按钮及其约束条件

JButton button3 = new JButton("C");// 创建按钮

GridBagConstraints gbc_button3 = new GridBagConstraints();// 创建网格组布局约束条件

gbc_button3.gridheight = 2;// 占用2列

gbc_button3.fill = GridBagConstraints.BOTH;// 设置填充方式

gbc_button3.weightx = 30.0;// 第一列的分布方式为30%

gbc_button3.insets = new Insets(0, 0, 5, 5);// 设置控件的空白

gbc_button3.gridx = 2;// 起始点为第3列

gbc_button3.gridy = 0;// 起始点为第1行

contentPane.add(button3, gbc_button3);// 增加按钮及其约束条件

JButton button4 = new JButton("D");// 创建按钮

GridBagConstraints gbc_button4 = new GridBagConstraints();// 创建网格组布局约束条件

gbc_button4.weightx = 40.0;// 第一列的分布方式为40%

gbc_button4.fill = GridBagConstraints.BOTH;// 设置填充方式

gbc_button4.gridheight = 4;// 占用4列

gbc_button4.insets = new Insets(0, 5, 0, 0);// 设置控件的空白

gbc_button4.gridx = 3;// 起始点为第4列

gbc_button4.gridy = 0;// 起始点为第1行

contentPane.add(button4, gbc_button4);// 增加按钮及其约束条件

JButton button5 = new JButton("E");// 创建按钮

GridBagConstraints gbc_button5 = new GridBagConstraints();// 创建网格组布局约束条件

gbc_button5.fill = GridBagConstraints.HORIZONTAL;// 设置填充方式

gbc_button5.gridwidth = 2;// 占用2行

gbc_button5.insets = new Insets(5, 0, 5, 5);// 设置控件的空白

gbc_button5.gridx = 0;// 起始点为第1列

gbc_button5.gridy = 1;// 起始点为第2行

contentPane.add(button5, gbc_button5);// 增加按钮及其约束条件

JButton button6 = new JButton("F");// 创建按钮

GridBagConstraints gbc_button6 = new GridBagConstraints();// 创建网格组布局约束条件

gbc_button6.fill = GridBagConstraints.HORIZONTAL;// 设置填充方式

gbc_button6.insets = new Insets(0, 0, 5, 5);// 设置控件的空白

gbc_button6.gridx = 0;// 起始点为第1列

gbc_button6.gridy = 2;// 起始点为第3行

contentPane.add(button6, gbc_button6);// 增加按钮及其约束条件

JButton button7 = new JButton("G");// 创建按钮

GridBagConstraints gbc_button7 = new GridBagConstraints();// 创建网格组布局约束条件

gbc_button7.fill = GridBagConstraints.BOTH;// 设置填充方式

gbc_button7.gridheight = 2;// 占用2列

gbc_button7.gridwidth = 2;// 占用2行

gbc_button7.insets = new Insets(5, 5, 0, 5);// 设置控件的空白

gbc_button7.gridx = 1;// 起始点为第2列

gbc_button7.gridy = 2;// 起始点为第3行

contentPane.add(button7, gbc_button7);// 增加按钮及其约束条件

JButton button8 = new JButton("H");// 创建按钮

GridBagConstraints gbc_button8 = new GridBagConstraints();// 创建网格组布局约束条件

gbc_button8.fill = GridBagConstraints.HORIZONTAL;// 设置填充方式

gbc_button8.insets = new Insets(5, 0, 0, 0);// 设置控件的空白

gbc_button8.gridx = 0;// 起始点为第1列

gbc_button8.gridy = 3;// 起始点为第4行

contentPane.add(button8, gbc_button8);// 增加按钮及其约束条件

}

}

java获取电子表格列宽的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java导出excel设置列宽、java获取电子表格列宽的信息别忘了在本站进行查找喔。