`
小杨学JAVA
  • 浏览: 901317 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jxl操作excel 单元格样式,合并单元格,插入图

阅读更多

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.swing.ImageIcon; import jxl.Workbook; import jxl.write.WritableImage; public class Test { public static void writeImageExcel(OutputStream os) throws Exception { //一定要流的形式创建这个对象 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os); jxl.write.WritableSheet ws = wwb.createSheet("写入图片", 0); File image = new File("d:\\22.png"); // ImageIcon imageIcon = new ImageIcon(Toolkit.getDefaultToolkit().getImage("d:\\22.png")); // // int height = imageIcon.getIconHeight(); // int width = imageIcon.getIconWidth(); // System.out.println(height + " "+ width); java.awt.image.BufferedImage bi7 = null; try { bi7 = javax.imageio.ImageIO.read(image); } catch (IOException e) { e.printStackTrace(); } int picWidth = bi7.getWidth(); // 图片宽, 像素 150 int picHeight = bi7.getHeight(); // 图片高, 像素 105 //test System.out.println("--1703"); System.out.println("Width=" + picWidth ); System.out.println("Height=" + picHeight ); // 输入参数, 图片显示的位置 double picBeginCol = 1.2; double picBeginRow = 1.2; /* 实际像素: 150/105 = 2.78 cm / 3.97 cm = 4832 / 1590 实际像素: 300/210 = 2倍大小 = 9600 / 3150 比率: 32 / 15 */ // 计算参数( picCellWidth, picCellHeight ), 图片显示大小, 默认 100% 显示: begin // 图片cell宽度 = 图片实际跨越每个cell所占长度的相对各个cell ratio的和 // 方法: 根据起始位置,计算图片实际跨越的区域, 然后计算相对ratio,然后累加 // double picCellWidth = 0.0; // 是 cell的跨越个数, 可小数 double picCellHeight = 0.0; // wc = ws.getWritableCell( picBeginCol, picBeginRow ); // 列,行 // ws.getColumnView( picBeginCol ).getSize(); // ws.getRowView( picBeginRow ).getSize(); int _picWidth = picWidth * 32 ; // pic的宽度,循环递减, 是jxl的宽度单位, 32/15 for(int x=0; x< 1234; x++) { int bc = (int)Math.floor( picBeginCol + x ); // 3.6 to 3 // 本次循环所在cell位置 System.out.println("x =" + x ); //test System.out.println("bc =" + bc ); //test int v = ws.getColumnView( bc ).getSize(); //本次cell宽,jxl单位 double _offset0 = 0.0; // >= 0 // 离左边的偏移量, 仅 x = 0 的时候才用 if( 0 == x ) _offset0 = ( picBeginCol - bc ) * v ; // System.out.println("_offset0 =" + _offset0 ); //test System.out.println("_picWidth =" + _picWidth ); //test System.out.println("v =" + v ); //test System.out.println("cw 00=" + ws.getColumnView( 0 ).getSize() ); //test System.out.println("ch 00=" + ws.getRowView( 0 ).getSize() ); //test System.out.println("cw 22=" + ws.getColumnView( 2 ).getSize() ); //test System.out.println("ch 22=" + ws.getRowView( 2 ).getSize() ); //test if( 0.0 + _offset0 + _picWidth > v ) // _picWidth 剩余长度超过一个cell时 { // 计算本次cell内, pic 所占 ratio值, 累加到 picCellWidth double _ratio = 1.0; if( 0 == x ) _ratio = ( 0.0 + v - _offset0 ) / v; System.out.println("_ratio =" + _ratio ); //test // picCellWidth += 1.0; picCellWidth += _ratio; _picWidth -= (int)( 0.0 + v - _offset0 ); // int } else // _picWidth 剩余长度在一个cell内时 { double _ratio = 0.0; if( v != 0 ) _ratio = ( 0.0 + _picWidth ) / v; picCellWidth += _ratio; System.out.println("for: picCellWidth =" + picCellWidth ); //test break; } if( x >= 1233 ) {} } // for // 此时 picCellWidth 是图片实际的值了 // int _picHeight = picHeight * 15 ; // pic的高度,循环递减, 是jxl的高度单位, 32/15 for(int x=0; x< 1234; x++) { int bc = (int)Math.floor( picBeginRow + x ); // 3.6 to 3 // 本次循环所在cell位置 int v = ws.getRowView( bc ).getSize(); //本次cell高,jxl单位 double _offset0 = 0.0; // >= 0 // 离顶部的偏移量, 仅 x = 0 的时候才用 if( 0 == x ) _offset0 = ( picBeginRow - bc ) * v ; // if( 0.0 + _offset0 + _picHeight > v ) // _picHeight 剩余长度超过一个cell时 { // 计算本次cell内, pic 所占 ratio值, 累加到 picCellHeight double _ratio = 1.0; if( 0 == x ) _ratio = ( 0.0 + v - _offset0 ) / v; // picCellHeight += 1.0; picCellHeight += _ratio; _picHeight -= (int)( 0.0 + v - _offset0 ); // int } else // _picHeight 剩余长度在一个cell内时 { double _ratio = 0.0; if( v != 0 ) _ratio = ( 0.0 + _picHeight ) / v; picCellHeight += _ratio; break; } if( x >= 1233 ) {} } // for // 此时 picCellHeight 是图片实际的值了 // 计算参数( picCellWidth, picCellHeight ), 图片显示大小, 默认 100% 显示: end //test System.out.println("picBeginCol=" + picBeginCol ); System.out.println("picBeginRow=" + picBeginRow ); System.out.println("picCellWidth=" + picCellWidth ); System.out.println("picCellHeight=" + picCellHeight ); WritableImage wimage = new WritableImage(0, 0, picCellWidth, picCellHeight, image); //WritableImage wimage = new WritableImage(0, 0, 3, 2.3, image); //WritableImage wimage1 = new WritableImage(3, 0, 3, 2.3, image); ws.addImage(wimage); //ws.addImage(wimage1); // 写入Exel工作表 wwb.write(); // 关闭Excel工作薄对象 wwb.close(); } public static void main(String args[]) throws Exception { try { File f = new File("d:\\image.xls"); //这里要以流的形式,不要以文件的形式 Test.writeImageExcel(new FileOutputStream(f)); } catch (Exception e) { e.printStackTrace(); } } }

 

转载:

分享到:
评论

相关推荐

    关于jxl操作excel说明以及jxl.jar包下载2.6

    JXL允许设置单元格的样式,如字体、颜色、对齐方式等。创建一个`WritableFont`或`WritableCellFormat`对象,然后在创建`Label`或`Number`对象时使用这些格式。 4. **处理公式**: 如果你需要在Excel文件中插入...

    jxl操作excel文件例子

    3. **格式化Excel内容**:JXL库还允许你控制单元格的样式,如字体、颜色、对齐方式等。`CellFormat`类提供了这些属性的设置方法,如`setAlignment(Alignment alignment)`用于设置水平对齐,`setFont(Font font)`用于...

    用jxl操作excel实例

    2. **写入Excel文件**:创建新的工作表,插入数据,设置单元格样式,如字体、颜色、边框等。 3. **修改Excel文件**:更新现有单元格的内容,删除或移动单元格,调整列宽和行高。 4. **公式处理**:支持Excel内置的...

    jxl操作excel.rar

    - **处理图像**:JXL也支持在Excel中插入图片,但需要额外处理二进制数据。 总的来说,JXL库为Java开发者提供了一种方便的方式来处理Excel文件,无论是简单的数据读写还是复杂的格式调整和公式计算,都能通过其丰富...

    jxl读写excel数据,输出图片

    JXL库提供了方便的API,使得开发者可以轻松地处理Excel数据,包括读取单元格内容、修改工作表、添加公式,以及本文重点讨论的——插入和输出图片。 **一、JXL库介绍** JXL是一个开源的Java库,专门用于处理Excel...

    java jxl操作excel

    JXL也支持将图片插入Excel文件,需要使用`WritableImage`类,并将其添加到指定的单元格。 9. **性能考虑** 对大型Excel文件进行操作时,应注意内存使用。JXL在内存中存储整个工作簿,所以对于非常大的文件,可能...

    jxl导出excel

    除了基本的读写功能,jxl还支持合并单元格、插入图片、处理图表等高级特性。对于大型数据集,可以使用流式写入模式以减少内存消耗。 在实际项目中,你可能需要根据业务需求调整上述代码,例如从数据库获取数据,或...

    Android poi 操作doc excel pdf && Android jxl 操作excel

    jxl库专注于Excel文件的操作,其在Java环境中处理Excel有以下特性: 1. **单元格操作**: - 写入单元格数据,支持数值、文本和日期类型 - 读取单元格内容 - 设置单元格格式,如字体、颜色、对齐方式 2. **图片...

    jxl操作excel的简析和应用.doc

    - **公式计算**: FormulaCell允许在单元格中插入Excel公式,JXL会自动计算结果。 - **图像和超链接**: JXL支持在Excel中插入图像(WritableImage)和超链接(WritableHyperlink)。 - **工作表设置**: 可以设置Sheet...

    JXL操作Excel实例(1)

    **JXL库详解与Excel操作实例** JXL(Java Excel API)是一个开源的Java库,专为处理Microsoft Excel文件而设计。它允许开发者在Java应用程序中读取、写入和修改Excel工作簿,无需依赖Microsoft Office。JXL库提供了...

    jxl操作Excel

    【JXL 操作 Excel】 JXL 是一个由韩国开发者编写的 Java 库,用于操作 Microsoft Excel 文件。在开源社区中,JXL 和 POI 都是处理 Excel 的常见选择,尽管 POI 功能更为强大,但 JXL 以其对中文的良好支持以及不...

    excel操作(jxl)

    - 开发者可以通过jxl库修改单元格的背景色、边框样式、对齐方式等属性,使Excel文件更符合需求。 3. **图像和图表支持**: - 虽然jxl库对图像和图表的支持有限,但它确实支持插入PNG格式的图片到Excel文件中。 -...

    jxl操作excel

    Java Excel Library(简称jxl)是一个广泛使用的Java库,它允许开发者在Java应用程序中读取、写入和修改Microsoft Excel文件。jxl不仅支持.xls格式,还能够处理.xlsx格式(虽然对.xlsx的支持有限)。这个库提供了...

    jxl导出Excel

    在Java编程中,有时我们需要...在实际开发中,可能还需要根据需求调整格式、样式或进行更复杂的操作,例如合并单元格、设置边框和填充色等。通过jxl提供的丰富API,可以灵活地实现各种功能,满足不同的Excel导出需求。

    JXL 和 POI 操作Excel 表格

    它提供了丰富的API,可以创建新的工作簿、工作表,插入数据,设置单元格样式,以及处理公式和图表。JXL的使用相对简单,开发者可以通过以下步骤操作Excel: 1. 引入JXL库的jar文件。 2. 创建`Workbook`对象,可以是...

    JXL导出excel的示例及文档

    这个库在Java编程中非常有用,因为Java原生并不支持直接操作Excel,而JXL提供了方便的接口来实现这一功能。在本示例中,我们将探讨如何使用JXL导出Excel以及JXL的API文档。 1. **JXL的基本用法** - **创建工作簿...

    Excel文件操作的jxl包

    3. **修改Excel文件**: jxl包允许开发者对现有Excel文件进行修改,比如更新单元格内容、增加或删除工作表、调整样式等。 4. **处理图像**: 支持在Excel文件中插入和操作图片,如JPEG、GIF和PNG等格式。 5. **工作...

    JXL 下载 Excel 文档

    - **单元格操作**:`Cell` 类表示 Excel 中的单元格,可以设置和获取单元格的值、类型(文本、数字、日期等)、样式等。 4. **高级功能** - **公式支持**:JXL 支持读取和写入含有公式的单元格,但不执行这些公式...

    jxl pdf excel

    jxl是Java中一个广泛使用的库,用于读写Microsoft Excel文件,而PDF处理则可能涉及了将Excel数据转换为PDF格式或者在PDF中插入Excel内容。 1. **jxl库**: jxl库是Java社区开发的一个开源项目,专门用于处理Excel...

Global site tag (gtag.js) - Google Analytics