public class VireObj {
String orgNo;
String orgName;
double openAcc;
double destoryAcc;
double totalAcc;
double monthInCount;
double monthInMoney;
double monthOutCount;
double monthOutMoney;
double totalInMoney;
public String getOrgNo() {
return orgNo;
}
public void setOrgNo(String orgNo) {
this.orgNo = orgNo;
}
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
public double getOpenAcc() {
return openAcc;
}
public void setOpenAcc(double openAcc) {
this.openAcc = openAcc;
}
public double getDestoryAcc() {
return destoryAcc;
}
public void setDestoryAcc(double destoryAcc) {
this.destoryAcc = destoryAcc;
}
public double getTotalAcc() {
return totalAcc;
}
public void setTotalAcc(double totalAcc) {
this.totalAcc = totalAcc;
}
public double getMonthInCount() {
return monthInCount;
}
public void setMonthInCount(double monthInCount) {
this.monthInCount = monthInCount;
}
public double getMonthInMoney() {
return monthInMoney;
}
public void setMonthInMoney(double monthInMoney) {
this.monthInMoney = monthInMoney;
}
public double getMonthOutCount() {
return monthOutCount;
}
public void setMonthOutCount(double monthOutCount) {
this.monthOutCount = monthOutCount;
}
public double getMonthOutMoney() {
return monthOutMoney;
}
public void setMonthOutMoney(double monthOutMoney) {
this.monthOutMoney = monthOutMoney;
}
public double getTotalInMoney() {
return totalInMoney;
}
public void setTotalInMoney(double totalInMoney) {
this.totalInMoney = totalInMoney;
}
}
public class ChartImg {
public String getImgTitle() {
return imgTitle;
}
public void setImgTitle(String imgTitle) {
this.imgTitle = imgTitle;
}
public String getImgName() {
return imgName;
}
public void setImgName(String imgName) {
this.imgName = imgName;
}
String imgTitle;
String imgName;
}
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Vector;
import jxl.CellType;
import jxl.Workbook;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Formula;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableCell;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableImage;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class XLSDemo {
private static final int TITLE_LENGTH = 7;
private static final int SHEET_WIDTH = 32;
private static final int SHEET_HEIGHT = 116;
/**
* 创建Excel
*/
private void makeXls() {
Workbook workbook = null;
try {
// 构建Workbook对象, 只读Workbook对象
// 直接从本地文件创建Workbook, 从输入流创建Workbook
InputStream ins = new FileInputStream(
"D:/source.xls");
workbook = Workbook.getWorkbook(ins);
// 利用已经创建的Excel工作薄创建新的可写入的Excel工作薄
File outFile = new File("D:/test.xls");
WritableWorkbook wwb = Workbook.createWorkbook(outFile, workbook);
// 读取第一张工作表
WritableSheet dataSheet = wwb.getSheet(0);
// 设置冻结单元格
dataSheet.getSettings().setVerticalFreeze(7);
dataSheet.getSettings().setHorizontalFreeze(2);
// 测试模拟数据
Vector vecData = new Vector();
for (int i = 0; i < 50; i++) {
VireObj obj = new VireObj();
obj.setOrgNo("00" + i + "0");
obj.setOrgName("机构" + (i + 1));
obj.setOpenAcc((int) (100 * Math.random()));
obj.setDestoryAcc((int) (10 * Math.random()));
obj.setTotalAcc((int) (500 * Math.random()));
obj.setMonthInCount((int) (500 * Math.random()));
obj.setMonthInMoney(500 * Math.random());
obj.setMonthOutCount((int) (500 * Math.random()));
obj.setMonthOutMoney(500 * Math.random());
vecData.add(obj);
}
// 插入数据
insertData(wwb, dataSheet, vecData);
// 插入模拟图像数据
Vector vecImg = new Vector();
for (int i = 0; i < 3; i++) {
ChartImg img = new ChartImg();
img.setImgTitle("图像" + (i + 1));
img.setImgName("D:/LogoPNG.png");
vecImg.add(img);
}
// 插入图表
insertImgsheet(wwb, vecImg);
// 写入Excel对象
wwb.write();
wwb.close();
} catch (Exception e) {
System.out.println("创建失败");
e.printStackTrace();
} finally {
// 操作完成时,关闭对象,释放占用的内存空间
workbook.close();
}
}
/**
* 插入数据
*
* @param wwb
* WritableWorkbook : 工作簿
* @param dataSheet
* WritableSheet : 工作表
* @throws RowsExceededException
* @throws WriteException
*/
private void insertData(WritableWorkbook wwb, WritableSheet dataSheet,
Vector vecData) throws RowsExceededException, WriteException {
// 获得标题单元格对象
modiStrCell(dataSheet, 2, 0, "工商银行江苏省分行 个人网上银行业务种类/开销户明细报表(2005-12)",
null);
// 修改数据单元格数据
for (int i = 0; i < vecData.size(); i++) {
VireObj obj = (VireObj) vecData.get(i);
modiStrCell(dataSheet, 0, TITLE_LENGTH + i, obj.getOrgNo(), null);
modiStrCell(dataSheet, 1, TITLE_LENGTH + i, obj.getOrgName(), null);
modiNumCell(dataSheet, 2, TITLE_LENGTH + i, obj.getOpenAcc(), null);
modiNumCell(dataSheet, 3, TITLE_LENGTH + i, obj.getDestoryAcc(),null);
modiNumCell(dataSheet, 4, TITLE_LENGTH + i, obj.getTotalAcc(), null);
modiNumCell(dataSheet, 5, TITLE_LENGTH + i, obj.getMonthInCount(),null);
modiNumCell(dataSheet, 6, TITLE_LENGTH + i, obj.getTotalInMoney(),null);
modiNumCell(dataSheet, 7, TITLE_LENGTH + i, obj.getMonthOutCount(),null);
modiNumCell(dataSheet, 8, TITLE_LENGTH + i, obj.getMonthOutMoney(),null);
}
// 删除空行
for (int j = vecData.size() + TITLE_LENGTH; j < SHEET_HEIGHT; j++) {
dataSheet.removeRow(vecData.size() + TITLE_LENGTH);
}
// 插入公式
for (int i = 2; i < SHEET_WIDTH; i++) {
modiFormulaCell(dataSheet, i, vecData.size() + TITLE_LENGTH, 8,vecData.size() + TITLE_LENGTH, null);
}
}
/**
* 修改字符单元格的值
*
* @param dataSheet
* WritableSheet : 工作表
* @param col
* int : 列
* @param row
* int : 行
* @param str
* String : 字符
* @param format
* CellFormat : 单元格的样式
* @throws RowsExceededException
* @throws WriteException
*/
private void modiStrCell(WritableSheet dataSheet, int col, int row,
String str, CellFormat format) throws RowsExceededException,
WriteException {
// 获得单元格对象
WritableCell cell = dataSheet.getWritableCell(col, row);
// 判断单元格的类型, 做出相应的转化
if (cell.getType() == CellType.EMPTY) {
Label lbl = new Label(col, row, str);
if (null != format) {
//lbl.setCellFormat(format);
} else {
//lbl.setCellFormat(cell.getCellFormat());
}
dataSheet.addCell(lbl);
} else if (cell.getType() == CellType.LABEL) {
Label lbl = (Label) cell;
lbl.setString(str);
} else if (cell.getType() == CellType.NUMBER) {
// 数字单元格修改
Number n1 = (Number) cell;
n1.setValue(42.05);
}
}
/**
* 修改数字单元格的值
*
* @param dataSheet
* WritableSheet : 工作表
* @param col
* int : 列
* @param row
* int : 行
* @param num
* double : 数值
* @param format
* CellFormat : 单元格的样式
* @throws RowsExceededException
* @throws WriteException
*/
private void modiNumCell(WritableSheet dataSheet, int col, int row,double num, CellFormat format) throws RowsExceededException,
WriteException {
// 获得单元格对象
WritableCell cell = dataSheet.getWritableCell(col, row);
// 判断单元格的类型, 做出相应的转化
if (cell.getType() == CellType.EMPTY) {
Number lbl = new Number(col, row, num);
if (null != format) {
//lbl.setCellFormat(format);
} else {
//lbl.setCellFormat(cell.getCellFormat());
}
System.out.println(dataSheet);
System.out.println(lbl);
dataSheet.addCell(lbl);
} else if (cell.getType() == CellType.NUMBER) {
// 数字单元格修改
Number lbl = (Number) cell;
lbl.setValue(num);
} else if (cell.getType() == CellType.LABEL) {
Label lbl = (Label) cell;
lbl.setString(String.valueOf(num));
}
}
/**
* 修改公式单元格的值
*
* @param dataSheet
* WritableSheet : 工作表
* @param col
* int : 列
* @param row
* int : 行
* @param startPos
* int : 开始位置
* @param endPos
* int : 结束位置
* @param format
* @throws RowsExceededException
* @throws WriteException
*/
private void modiFormulaCell(WritableSheet dataSheet, int col, int row,
int startPos, int endPos, CellFormat format)
throws RowsExceededException, WriteException {
String f = getFormula(col, row, startPos, endPos);
// 插入公式(只支持插入,不支持修改)
WritableCell cell = dataSheet.getWritableCell(col, row);
if (cell.getType() == CellType.EMPTY) {
// 公式单元格
Formula lbl = new Formula(col, row, f);
if (null != format) {
//lbl.setCellFormat(format);
} else {
//lbl.setCellFormat(cell.getCellFormat());
}
dataSheet.addCell(lbl);
} else if (cell.getType() == CellType.STRING_FORMULA) {
System.out.println("Formula modify not supported!");
}
}
/**
* 得到公式
*
* @param col
* int : 列
* @param row
* int : 行
* @param startPos
* int : 开始位置
* @param endPos
* int : 结束位置
* @return String
* @throws RowsExceededException
* @throws WriteException
*/
private String getFormula(int col, int row, int startPos, int endPos)
throws RowsExceededException, WriteException {
char base = 'A';
char c1 = base;
StringBuffer formula = new StringBuffer(128);
// 组装公式
formula.append("SUM(");
if (col <= 25) {
c1 = (char) (col % 26 + base);
formula.append(c1).append(startPos).append(":").append(c1).append(
endPos).append(")");
} else if (col > 25) {
char c2 = (char) ((col - 26) / 26 + base);
c1 = (char) ((col - 26) % 26 + base);
formula.append(c2).append(c1).append(startPos).append(":").append(
c2).append(c1).append(endPos).append(")");
}
return formula.toString();
}
/**
* 插入图表工作表
*
* @param wwb
* WritableWorkbook : 工作簿
* @param vecImg
* Vector : 图像链表
* @throws RowsExceededException
* @throws WriteException
*/
private void insertImgsheet(WritableWorkbook wwb, Vector vecImg)
throws RowsExceededException, WriteException {
// 插入图像
WritableSheet imgSheet;
if ((wwb.getSheets()).length < 2) {
imgSheet = wwb.createSheet("图表", 1);
} else {
imgSheet = wwb.getSheet(1);
}
for (int i = 0; i < vecImg.size(); i++) {
ChartImg chart = (ChartImg) vecImg.get(i);
// 插入图像标题
Label lbl = new Label(0, 2 + 20 * i, chart.getImgTitle());
WritableFont font = new WritableFont(WritableFont.ARIAL,
WritableFont.DEFAULT_POINT_SIZE, WritableFont.NO_BOLD,
false, UnderlineStyle.NO_UNDERLINE, Colour.DARK_BLUE2);
WritableCellFormat background = new WritableCellFormat(font);
background.setWrap(true);
background.setBackground(Colour.GRAY_25);
imgSheet.mergeCells(0, 2 + 20 * i, 9, 2 + 20 * i);
lbl.setCellFormat(background);
imgSheet.addCell(lbl);
// 插入图像单元格
insertImgCell(imgSheet, 2, 4 + 20 * i, 8, 15, chart.getImgName());
}
}
/**
* 插入图像到单元格(图像格式只支持png)
*
* @param dataSheet
* WritableSheet : 工作表
* @param col
* int : 列
* @param row
* int : 行
* @param width
* int : 宽
* @param height
* int : 高
* @param imgName
* String : 图像的全路径
* @throws RowsExceededException
* @throws WriteException
*/
private void insertImgCell(WritableSheet dataSheet, int col, int row,
int width, int height, String imgName)
throws RowsExceededException, WriteException {
File imgFile = new File(imgName);
WritableImage img = new WritableImage(col, row, width, height, imgFile);
dataSheet.addImage(img);
}
/**
* 测试
*
* @param args
*/
public static void main(String[] args) {
XLSDemo demo = new XLSDemo();
demo.makeXls();
}
}
分享到:
相关推荐
java读取excel 表格数据。 public static void main(String[] args) { String[][] content=POIExcelUtils.read("E:\\1.xlsx"); for(int i=0;i;i++) { if(content[i]!=null){ for(int j=0;j[i].length;j...
在VB(Visual Basic)编程中,常常需要处理与Excel数据的交互,比如读取Excel表格中的数据并将其显示在ListView控件中。ListView控件是一个非常实用的组件,可以用来展示列表形式的数据,包括多种视图模式,如图标、...
在C# WinForm应用中,读取Excel表格是常见的任务,尤其在数据处理和报表生成时。本项目可能是一个简单的示例,展示了如何利用C#的库来读取Excel文件中的数据。以下将详细讲解这一过程,以及涉及的关键知识点。 首先...
在VC++6.0开发环境中,通过编程读取Excel表格数据是常见的任务,这主要涉及到Microsoft Office自动化接口的使用。本文将深入探讨如何利用Visual C++ 6.0与Excel进行交互,实现从Excel文件中读取数据的功能。 首先,...
- **创建Workbook对象**:接着,我们需要使用POI的`XSSFWorkbook`类创建一个Workbook对象,该对象代表整个Excel工作簿。使用`XSSFWorkbook`的构造函数传入之前创建的输入流。 ```java try (InputStream excel...
本文将深入探讨如何在C#中实现无依赖于Microsoft Office的情况下读取Excel表格数据,主要关注以下几个方面:使用开源库、操作Excel文件格式以及优化性能。 首先,C#本身并不内置读取Excel的API,因此我们需要借助第...
JS方法读取excel表格并显示在页面上,单HTML网页代码事例
### Java读取Excel表格中的日期 #### 背景与问题描述 在处理Excel文件时,经常遇到的一个问题是如何正确地识别并处理日期格式的数据。这是因为Excel中的日期格式较为复杂,有时甚至会出现不同版本的Excel文件中...
这个项目就是一个典型的示例,它演示了如何使用OleDb技术来读取Excel表格的数据,并在窗体上通过DataGridView控件进行展示。下面将详细讲解这个过程涉及的知识点。 首先,`OleDb`(OLE DB)是微软提供的一种数据...
在易语言编程环境中,读取Excel文件并将其数据导入到高级表格是一种常见的需求,这有助于数据处理和分析。本文将详细讲解如何使用易语言来实现这一功能,主要涉及的知识点包括: 1. 易语言基础:易语言是中国自主...
本主题将详细探讨如何使用C++来读取Excel表格,并在TeeChart控件中绘制各种图表,如曲线图、散点图和饼状图。 首先,我们需要一个库来读取Excel文件。在C++中,最常用的是LibXL和Apache POI,但这里我们将重点放在...
在VB.NET中,读取Excel表格内容是一项常见的任务,尤其对于数据处理和分析的应用程序来说。VB.NET提供了多种方法来实现这一目标,包括使用Microsoft Office Interop库(适用于与Office应用程序交互)和第三方库,如...
这个函数能够直接读取Excel文件中的数据,包括工作表名称、单元格内容等。例如,要读取名为“Sheet1”的工作表,可以这样编写代码: ```idl ; 加载xlsread库 loadct, /xlsread ; 指定Excel文件路径 file_path = '...
"专门为读取excel表格的程序源码的插件"是一个针对这个需求而设计的工具,它提供了用于读取Excel文件的源代码,方便开发者集成到自己的应用程序中。以下是对这个主题的详细讲解: 首先,我们来了解一下什么是Excel...
使用 AutoLISP 读取 Excel 文件的优点是可以自动化读取和处理 Excel 文件的过程,提高工作效率和准确性。同时,AutoLISP 也可以与其他编程语言集成,实现更复杂的自动化任务。 在实际应用中,AutoLISP 读取 Excel ...
Java批量读取Excel表格是一种常见的数据处理需求,特别是在大数据导入、报表生成或数据分析场景中。在Java中,我们可以借助Apache POI库来实现这一功能。Apache POI是一个强大的开源库,它允许Java开发者读写...
例如,使用luaxlsx读取Excel表格的一般步骤如下: ```lua local xlsx = require 'xlsx' -- 打开Excel文件 local workbook = xlsx.open('example.xlsx') -- 选择工作表 local sheet = workbook['Sheet1'] -- 读取...
在IT行业中,定时读取Excel更新到数据库是一项常见的任务,特别是在数据管理、数据分析或业务自动化等领域。本场景中,我们使用的Excel版本是2003,这是一个较早的版本,但依然广泛应用于许多组织。以下将详细介绍...
功能:通过批量读取多个excel文件,将每个excel文件创建为sqlite数据库文件中的一个表格,最终形成包含这些excel文件内容的.db数据库文件。 用法:将压缩包内的.exe/.dll文件放在同一文件夹内,双击运行文件内的...
9. **使用示例**:一个简单的使用`js-xlsx`读取Excel文件并显示在HTML表格的示例: ```javascript var reader = new FileReader(); reader.onload = function(e) { var binaryString = e.target.result; var ...