java写excel文件及遇到的问题

java 创建EXCEL文件,并向EXCEL中写入数据 java向EXCEL中写入数据。里面有一个ExcelWrite.java的文件和一个jxl的jar包。 立即下载

java写excel文件及遇到的问题

最近做了导出excel文件的功能,在此记录一下我遇到的问题,并对方法进行了简单的封装.

需要导入的jar包

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;

如果你要生成一个工作表专门做使用说明

例如:
这里写图片描述
则需要有合并单元格,内容换行操作;
你可以这样:

我粗略的封装了一下:

  /***
     * <p>
     * 创建使用说明的工作表
     * 
     * @param wb:excel文件
     * @param rowStart:合并单元格的下标,小于0表示不合并
     * @param rowEnd
     * @param colStart
     * @param colEnd
     * @param content:说明内容
     */
    private void generatingSheetTemplate (HSSFWorkbook wb, int rowStart, int rowEnd, int colStart, int colEnd,String content,String sheetName)
    {
        HSSFSheet sheet1 = wb.createSheet (sheetName);
        HSSFRow sheet1Row1 = sheet1.createRow (0);
        HSSFCell sheet1Cell = sheet1Row1.createCell (0);
        HSSFCellStyle cellStyle = wb.createCellStyle ();
        // 设置样式自动换行,顶部垂直[配合/r/n强制换行]
        cellStyle.setWrapText (true);
        cellStyle.setVerticalAlignment (HSSFCellStyle.VERTICAL_TOP);
        sheet1Cell.setCellStyle (cellStyle);
        sheet1Cell.setCellValue (new HSSFRichTextString (content));//换行这里需要这个对象,否则强制换行不生效
        // 合并单元格操作
        if (rowStart >= 0 && rowEnd >= 0 && colStart >= 0 && colEnd >= 0)
        {
            sheet1.addMergedRegion (new CellRangeAddress (rowStart, rowEnd, colStart, colEnd));
        }
    }

上面例子生成代码(着重注意/r/n这是强制换行):

HSSFWorkbook wb = new HSSFWorkbook ();
            String content = "模版使用说明:\r\n" 
            + "1、父类元数据分类应该出现在子元数据分类之前\r\n"
            + "2、每元数据分类下的具体元数据存储在单独的书签中,其命名规则为“元数据-”加上"
            + "元数据分类的类别编码,如有以编码为“001”的元数据分类,那么其下面的具体元数据"
            + "应存储在命名为“元数据-001”的书签中,如果该编码为“001”的元数据分类有一个编码"
            + "为“000”的父级分类,则其下面的具体元数据应存储在命名"
            + "为“元数据-000.001”的书签中。\r\n"
            +"3、“字段名”列:如果暂时不能确定该列值可留空、待定义数据集时再在界面上修改即可\r\n"
            +"4、“标准代码标识”列:如果该元数据有标准代码则该列值为“1”否则为“0”;"
            + "并且如果有标准代码时“标准代码”列的值应该来自于《标准代码导入模板.xls》"
            + "中“标准代码描述”sheet页的“标准代码编码”列对应的值\r\n"
            + "5、“最小值”、“最大值”、“小数位”、“剂量单位”、“数据来源”列,如果"
            + "找不到对应的值,留空即可\r\n"
            + "6、元数据编码的格式:如果是国标或卫生部标准提供的元"
            + "数据请按相应的编码规则进行编码,否则按CF+大类编码+小类编码+流水号的形式保存";
            String sheetName="模板使用声明";
            // 生成模板说明工作表
            generatingSheetTemplate (wb, 0, 24, 0, 11, content,sheetName);

含表格数据的工作表

例如:这里写图片描述
在这里你可能需要设置表格里的文字和宽度
我的封装:

/**
     * 
     * <p>
     * 生成工作表(表头并设置其宽度)
     * 
     * @param wb:excel文件
     * @param heetName:工作表名称
     * @param header:表头显示信息,及其宽度(LinkedHashMap确保其顺序)
     * @return
     */
    private HSSFSheet generatingSheetAtHeader (HSSFWorkbook wb, String sheetName,
                                               LinkedHashMap <String, Integer> header)
    {
        HSSFSheet sheet2 = wb.createSheet (sheetName);
        HSSFRow sheet2HeaderRow = sheet2.createRow (0);
        int index = 0;
        for (Map.Entry <String, Integer> entry : header.entrySet ())
        {
            String headerName = entry.getKey ();
            Integer width = entry.getValue ();
            sheet2.setColumnWidth (index, width);
            HSSFCell sheet2cell = sheet2HeaderRow.createCell (index);
            sheet2cell.setCellValue (headerName);
            index++;
        }
        return sheet2;
    }

例子的生成:

String sheetName = "数据元版本";
LinkedHashMap <String, Integer> map1 = new LinkedHashMap <String, Integer> ();
map1.put ("版本编码", Integer.valueOf (30 * 256));
map1.put ("版本名称", Integer.valueOf (30 * 256));
map1.put ("版本描述", Integer.valueOf (30 * 256));
HSSFSheet sheet1 = generatingSheetAtHeader (wb, sheetName, map1);
if (null != baseDataVersion)
    {
        HSSFRow sheet1Row2 = sheet1.createRow (1);
        HSSFCell sheet1cell = sheet1Row2.createCell (0);
        sheet1cell.setCellValue (baseDataVersion.getVersionCode ());
        sheet1cell = sheet1Row2.createCell (1);
        sheet1cell.setCellValue (baseDataVersion.getVersionName ());
        sheet1cell = sheet1Row2.createCell (2);
        sheet1cell.setCellValue (baseDataVersion.getVersionDes ());
    }

有关生成excel表格文件的问题

1.换行问题(上面提过了)
2.工作表的命名问题:

工作表的命名不允许重复,且不区分大小写,如你的一个工作表的名称为A100,然而在这个excel文件中就不能创建a100的工作表了,更不要说在建一个A100,这会报错的,请注意!原因:WINDOWS系统一贯不区分大小写,文件也是这样的。

java读写xlsx文件 java利用poi读写excel2010(xlsx)文件 环境:eclipse3.7.2,jre6,excel2010 立即下载

相关推荐

java对Excel进行读取、写入

java对Excel进行读取、写入 Excel本身就可以作为一个数据库,作存储

HSSFWorkBooK用法 excel 操作

转自:http://lancijk.iteye.com/blog/1390341    jxl 也挺好用 Java代码   public ActionResult excelPrint() {        HSSFWorkbook workbook = new HSSFWorkbook();// 创建一个Excel文件        HSSFSheet sheet

在路上 825

DESeq2差异分析结果不会看?用这个R脚本5分钟生成发表级火山图和热图

本文详细介绍了如何使用R语言快速可视化DESeq2差异分析结果,5分钟内生成可直接用于论文发表的火山图和热图。通过解析DESeq2数据结构、展示ggplot2和EnhancedVolcano包的绘图技巧,以及pheatmap包的热图定制方法,帮助研究者高效呈现差异表达基因分析结果。

weixin_30326515的博客 340

java poi 换行_java poi出excel换行问题

package jp.co.misumi.mdm.batch.common.jobrunner;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStrea...

weixin_35723435的博客 378

英伟达笔试1

本文摘要: 使用NAND2门设计4位奇偶校验发生器,通过15个NAND2门实现4输入异或功能,分三级结构完成奇校验计算。 时序分析公式总结: 建立时间约束:T_cq + T_comb(max) + T_setup + T_skew ≤ T_clk 保持时间约束:T_cq + T_comb(min) + T_skew ≥ T_hold 提供了两段路径的具体时序检查公式和建立违规修复方法 分析32位粘滞累积寄存器Verilog代码: 功能:记录输入数据中出现过的所有1位 每个bit独立实现,复位清零,有效输入时

soulermax的博客 167

word2vector入门教程

摘要: 网上已经有许多对w2v的介绍了,这里只是做一个简单的概括。下面这篇文章我认为是关于W2V写的比较好的文章,读者有兴趣可以先参考一下: w2v参考文章1 另外一篇是关于Skip-Gram和CBow的介绍。 Skip-Gram&CBOW 逻辑比较清晰的综述文章: 综述文章 数学原理很清晰很短的一篇文章(也有关于负采样的简单说明) 参考文章 1.什么

SCUT_Sam 1万+

POI操作Excel常用方法总结

一、 POI简介             Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况             HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。H

生命不息 奋斗不止 4508

用MATLAB从零实现六足机器人步态仿真:交替三角与波动步态保姆级教程

本文详细介绍了如何使用MATLAB从零实现六足机器人的两种经典步态仿真:交替三角支撑步态和波动步态。通过参数定义、相位设置、运动轨迹生成和三维可视化等步骤,帮助读者掌握六足机器人步态规划的核心技术。教程包含完整代码和详细解析,适合机器人爱好者和相关专业学生学习实践。

weixin_26765363的博客 230

Java_excel文件(二)

Java 操作 excel 文件 api 微软 windows 换行 单元格长度 单元格最大字符数   excel单元格的最大长度 一个单元格最大能够容纳32000个字符。 但实际情况是,到底还需要实际测试一下,否则超过限制,excel就把对应的单元格置为空(实际可能是未插入成功)。这样是不太好调试的,debug也不好做。--注意哦~   单元格之内容的换行 在单元格内,...

fantaxy025025的专栏 219

微信终于支持“多设备同时在线”?我用 NAS + Docker 搭了一个云端微信系统,多端共享24小时在线

通过Docker 容器,将微信运行在云端并通过浏览器访问,实现多设备共享同一微信会话 📱。本文详细介绍完整部署流程、docker-compose 配置及资源控制方案,让微信变成“可访问的云桌面应用” ✨

XiaoqiangClub的博客 875

STC单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能介绍和使用

perseverance51博客 3048

poi java 类型转化方法

public static String getCellValue(Cell cell) { String cellValue = ""; if (cell == null) { return cellValue; } // 判断数据的类型 switch (cell.getCellType())...

liujun12355的专栏 826

图解移动机器人中的运动规划(Motion Planning),附几十种规划算法

运动规划是移动机器人的核心理论和工程技术之一,本文作为教程先导,解析了运动规划的两大组件——路径规划和轨迹规划。欢迎感兴趣的同学订阅专栏!

FRIGIDWINTER的博客 4万+

java写excel文件宏失效_java写excel文件及遇到的问题

java写excel文件及遇到的问题最近做了导出excel文件的功能,在此记录一下我遇到的问题,并对方法进行了简单的封装.需要导入的jar包import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermo...

weixin_42648844的博客 672

K8s(十二):监控与报警(163邮箱+钉钉)-Prometheus + Grafana + Alertmanager(超详细)

🔴 K8s(十二):监控与报警(163邮箱+钉钉)-Prometheus + Grafana + Alertmanager(超详细)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java 删除excel文件_java 写excel 文件的问题,写完后 就把原来的内容清除了

比如我原来(0,0)的位置是“大家好”,现在用JAVA的这个类写入(1,1)的内容是“哈哈”,再打开表格时,只剩下“哈哈”,“大家好“没有了,源代码如下importorg.apache.poi.hssf.usermo...比如我原来(0,0)的位置是 “大家好”,现在用JAVA的这个类写入(1,1)的内容是“哈哈”,再打开表格时,只剩下“哈哈”,“大家好“没有了,源代码如下import org.a...

weixin_36416921的博客 723

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

利用java开源项目apache poi写excel文件行数过多问题解决方案

http://blog.sina.com.cn/s/blog_4add93f0010006ih.html   利用java开源项目apache poi写excel文件行数过多问题解决方案  (2006-12-30 14:09:18) 转载▼   分类: 信息技术         我们项目中有一个应用就是把数据导出为excel文件,提供给管理员导出到本地。...

微尘的世界 542

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java使用jxl.jar包写Excel文件的最适合列宽问题基本实现

以前用jxl.jar包,读写过Excel文件。也没有注意最适合列宽的问题,但是jxl.jar没有提供最适合列宽的功能,上次用到写了一下,可以基本实现最适合列宽。 注意,这个只是基本可以实现,基本针对中文电子报表。 1.实现思路   (1)一般的中文汉字占位长度是英文字母的2倍,“方块字”很统一。   (2)对于要写入Excel中的数据统计每一列的最大列宽,最后直接将这一列的

wolfking0608的博客 706

关于Java对excel 写入操作导致文件破损问题

Java写入Excel文件导致破损的常见原因及解决方案 摘要:本文分析了Java程序写入Excel文件时出现0KB破损文件的问题,主要原因是文件流未正确关闭。通过对比危险写法与安全写法,指出try-with-resources机制能自动关闭流并刷新缓冲区,确保文件完整性。文章建议:1)始终使用try-with-resources管理流;2)对关键数据采用临时文件策略;3)必要时手动刷新缓冲区。正确处理文件流是避免Excel写入损坏的关键,特别在使用POI操作时更需注意资源管理。最佳实践可有效防止文件破损问题

根号三的博客 1282

java poi写入excel文件_java poi对同一个excel文件进行读写

环境操作系统:win7jdk: 1.7需求1、产品部的同事经常给我一批账号,然后去统计这些账号的登录次数。他们一般给我这样的一份文件: ①我一般的做法就是先把这个账号全部读出来,用set集合装好后,再去统计登录次数。②把统计好的结果导出到新的excel中。关键上面第二步,产品部的人,不得不手动的重复复制粘贴操作。时间长了,他们就有意见啦。改进以前我总是导出到新的excel中,是因为我不知道怎么对...

weixin_39575565的博客 302

Java 实现Excel表数据的读取和写入 以及过程中可能遇到的问题

问题1:Unable to recognize OLE stream 格式的问题要可能是因为给的数据是2010年的数据表后缀为.xlsx,要先转化成2003版的后缀为.xls 问题2: Warning: Property storage name for 5 is empty - setting to Root Entry 可能是jxl.jar 不支持Excel 5...

weixin_34117211的博客 281

Java高效处理Excel【阿里yyds!】

挖掘开源的价值 每天分享一篇优质的开源项目~ 3篇原创内容 ...

weixin_44028058的博客 667

java解析20万Excel

目前java导入Excel文件,有少量数据时使用Workbook解析没有问题,但在遇到海量数据时就会崩溃,查阅资料结合别人的代码自己也写了一个实例。 先看结论再看代码: 1.优点:灵活,如有多个不同的Excel表,可以写多个ExcelXXXReader,例如我有三个表,Coupon,Qa,Order,那我就对应ExcelCouponReader,ExcelQaReader,Excel...

北风浊酒 1075

java poi读取xlsm文件_java – POI – 在Excel中打开文件时无法写入文件?

我是网站上的新手.我尝试在打开excel文件时写入(使用POI / JAVA).当我尝试创建文件输出流以写入文件时,我收到了java.io.FileNotFoundException错误.FileOutputStream不起作用.我收到以下消息:the process cannot access the file because it is being used by anotherprocess...

weixin_39543758的博客 357
上一篇: 导入批量数据一次查询将数据的编码重复的查出来
下一篇: java String类中的intern方法
java_trainee
博客等级 码龄10年 12粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值