「java获取电子表格列宽」java导出excel设置列宽
本篇文章给大家谈谈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获取电子表格列宽的信息别忘了在本站进行查找喔。