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...
C# winform 读取Excel表格中的数据,C# winform 读取Excel表格中的数据
用Java程序读取Excel表格里的内容并显示在Swing界面里。
VB 读取Excel表格数据并在ListView控件中显示
实现Qt程序对excel表格数据的快速读写,适用于数百条以上的数据记录。
用C#开发的一个读取Excel表格的Demo,无需安装office。
.Net C# 读取Excel表格数据,根据表格数据结构在数据库新建一张对应的数据表既可以上传导入SQlServer数据库,代码有上传文件功能和解析表格数据功能,这里是建数据转成DataTable保存,导入速度对循环导入效率高很多...
jquery读取excel组件,可读取excel表格中的内容
js读取excel表格的js文件,js读取excel表格的js文件,js读取excel表格的js文件,js读取excel表格的js文件,
可以通过matlab读取excel表格并画图,可以索引至第n列,功能易实现,可验证
实现了VC++6.0平台从窗口选择EXCEL读取其内容的功能
用于批量读取excel表格。工作写时非常好用。2003-2010都支持。
内容 : vue 和element 做前端读取excel表格格格格格格
易语言读取excel文件到高级表格源码,读取excel文件到高级表格,转换字母
C# WinFORM 窗体小程序。采用oledb技术读取EXCEL表格内容,并使用DataGridView控件进行展示,含全部源代码,供有需要的人士下载学习使用。
功能:通过批量读取多个excel文件,将每个excel文件创建为sqlite数据库文件中的一个表格,最终形成包含这些excel文件内容的.db数据库文件。 用法:将压缩包内的.exe/.dll文件放在同一文件夹内,双击运行文件内的...
通过Java读取Excel文件中的数据时,需要自动判断当前Cell中的数据格式是否日期格式,如果是就要做特殊处理,以便读出数据的格式与预想的相符。
该插件为dll动态库,可用于其他场景。使用的初衷是配合Unity GameFramework框架,用在本地化扩展组件里,扩展组件读取后,转换为Xml文件。
labview读取Excel表格中的数据,速度快,代码实现简单,下载下来直接就可以使用了