public class WordUtil {
/**
* 将内容写入word文档(限文本内容)
* @param str
* @param filename
* @return
*/
public static boolean writeWord(String str,String filename){
boolean flag = false;
POIFSFileSystem fs = new POIFSFileSystem();
try {
byte[] b = str.getBytes("utf-8");
ByteArrayInputStream in = new ByteArrayInputStream(b);
//解决中文乱码问题
DirectoryEntry directory = fs.getRoot();
directory.createDocument("WordDocument", in);
//输出
mkDir(filename);//先建好上级文件夹
FileOutputStream out = new FileOutputStream(filename);
fs.writeFilesystem(out);
in.close();
out.flush();
out.close();
flag = true;
} catch (IOException e1) {
e1.printStackTrace();
flag = false;
}
return flag;
}
/**
*创建word文档
*/
public static void createWord(String filename,String content,String[] title,List<Object[]> list){
XWPFDocument doc = new XWPFDocument();
createPparagraph(doc,content); //段落文本
if(title!=null){
createTable(doc,title,list); //表格
}
FileOutputStream out;
try {
mkDir(filename); //建好文件夹
out = new FileOutputStream(filename);
doc.write(out);
out.flush();
out.close();
System.out.println("创建word 成功");
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件不存在");
} catch (IOException e) {
e.printStackTrace();
System.out.println("创建word 失败");
}
}
/**
* 创建段落内容
* @param doc
* @param content
*/
public static void createPparagraph(XWPFDocument doc,String content){
//段落设置
XWPFParagraph p = doc.createParagraph();
p.setAlignment(ParagraphAlignment.CENTER); //水平对齐
p.setVerticalAlignment(TextAlignment.TOP); //垂直对齐
p.setStyle("");
//边框设置
p.setBorderBottom(Borders.DOUBLE);
p.setBorderTop(Borders.DOUBLE);
p.setBorderRight(Borders.DOUBLE);
p.setBorderLeft(Borders.DOUBLE);
p.setBorderBetween(Borders.SINGLE);
//字体设置
XWPFRun r = p.createRun();
r.setBold(true); //加粗
r.setFontFamily("Courier"); //字体样式
r.setUnderline(UnderlinePatterns.DOT_DOT_DASH); //下划线
r.setTextPosition(100); //位置
r.setText(content); //设置文本
}
/**
* 创建word表格(表格样式有限)
* @param doc
* @param title
* @param list
*/
public static void createTable(XWPFDocument doc,String[] title,List<Object[]> list){
int col = title.length; //表格列
//段落样式
XWPFParagraph p = doc.createParagraph();
p.setAlignment(ParagraphAlignment.CENTER);
p.setVerticalAlignment(TextAlignment.BASELINE);
/*******************创建表格 start********************/
XWPFTable table = doc.createTable(1,col);//创建表格
//添加表格标题
XWPFTableRow rowTitle = table.getRow(0);
for(int i=0;i<title.length;i++){
String s = title[i];
rowTitle.getCell(i).setParagraph(p); //样式
rowTitle.getCell(i).setText(s); //值
}
//添加表格数据
if(list!=null && list.size()>0){
for(int i=0;i<list.size();i++){
Object[] obj = list.get(i);
XWPFTableRow tr = table.createRow();
for(int j=0; j<obj.length;j++){
// 设置样式
tr.getCell(j).setParagraph(p);
// 设值
tr.getCell(j).setText(obj[j].toString());
}
}
}
/*******************创建表格 end********************/
}
/**
* 遍历取得word文档中的表格(只能取得表格中内容)
* @param file
*/
public static void readTable(String filename){
try{
FileInputStream in = new FileInputStream(filename);//载入文档
POIFSFileSystem fs = new POIFSFileSystem(in);
HWPFDocument doc = new HWPFDocument(fs);
Range range = doc.getRange();//得到文档的读取范围
TableIterator it = new TableIterator(range);
//迭代文档中的表格
while (it.hasNext()) {
Table tb = (Table) it.next();
//迭代行,默认从0开始
for (int i = 0; i < tb.numRows(); i++) {
TableRow tr = tb.getRow(i);
//迭代列,默认从0开始
for (int j = 0; j < tr.numCells(); j++) {
TableCell td = tr.getCell(j);//取得单元格
//取得单元格的内容
for(int k=0;k<td.numParagraphs();k++){
Paragraph para =td.getParagraph(k);
String s = para.text();
System.out.println(s);
}
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 替换word中的内容
* @param filename
* @param oldStr
* @param newStr
*/
public static void replaceWord(String filename,String oldStr,String newStr){
FileInputStream in;
try {
in = new FileInputStream(filename);
HWPFDocument doc = new HWPFDocument(in);
Range range = doc.getRange();
range.replaceText(oldStr, newStr);
String text = range.text();
writeWord(text,filename);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 读取word文档,并写入另一文档
*
*/
public static void copyWord(){
FileInputStream in;
try {
in = new FileInputStream("D:\\wordTable.docx");
POIFSFileSystem fs = new POIFSFileSystem(in);
HWPFDocument doc = new HWPFDocument(fs);
Range range = doc.getRange();
String text = range.text();
System.out.println("old-----"+text);
FileOutputStream out = new FileOutputStream("D:\\word2.doc");
fs.writeFilesystem(out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 建目录
* @param filename
* @return
*/
public static boolean mkDir(String filename){
int last = filename.lastIndexOf("\\");
String dirPath = filename.substring(0, last);
File dir = new File(dirPath);
if(!dir.exists()){//不存在
return dir.mkdirs();
}
return true;
}
public static void main(String[] args) throws Exception {
String file1 = "D:\\word.doc";
String file2 = "D:\\wordTable.docx";
//模拟数据
String content = "这是我的导出word文档内容。The quick brown fox";
String[] title = new String[]{"编号","姓名","年龄"};
List<Object[]> list = new ArrayList<Object[]>();
for(int i=0;i<5;i++){
Object[] obj = new Object[3];
obj[0] = "A" + i;
obj[1] = "Zhang" + i;
obj[2] = "1" + i;
list.add(obj);
}
createWord(file1, content, title, list);
// copyWord();
// writeWord(content ,file1);
}
}
分享到:
相关推荐
后端基于PHP+mysql,简单实现了预订、入住、结账以及客户信息维护等功能。年代久远,注释较少,功能简陋,仅供学习交流。
springboot项目基于Hadoop的高校固定资产管理系统研究与实现_hot,含有完整的源码和报告文档
本文基于AlexNet深度学习模型,通过百度爬取的较少图片,训练了一个进行中草药的识别模型,可用于识别11种不同的中草药类型有:{'曼陀罗': 0, '白花蛇舌草': 1, '芍药': 2, '苍耳': 3, '蒲公英': 4, '薄荷': 5, '藿香': 6, '蛇莓': 7, '金银花': 8, '鸡蛋花': 9, '龙葵': 10}。并基于此模型开发了一款带UI界面的中草药智能识别系统,可用于识别场景中的中草药类别,更方便进行功能的展示。该系统是基于python与c++ QT5开发的,支持图片识别检测。本文提供了完整的Python代码和使用教程,给感兴趣的小伙伴参考学习。
springboot项目基于协同过滤算法的私人诊所管理系统_to,含有完整的源码和报告文档
图表分类ppt
图表分类ppt
Z源逆变器闭环仿真模型,并网,采用L滤波器。
西门子PLC1500大型程序 汽车产线fanuc机器人焊装 2台触摸屏TP1500程序 9个智能远程终端ET200SP Profinet连接 15个Festo智能模块Profinet通讯 10台Fanuc发那科机器人Profinet通讯 3台G120变频器Profinet通讯 2台智能电能管理仪表PAC3200 4个GRAPH顺控程序 图尔克RFID总线模组通讯 和MES系统通讯,西门子安全模块 程序经典,结构清晰,SCL算法,堆栈,梯形图 包含需要的GSD文件,博图V14以上版本均可打开,需要博图软件安装完整。 可以用来借鉴学习西门子大型程序的结构思路方法,通讯应用等
四轴抓取视觉旋转标定源代码,学习机器视觉和运动控制的最佳例子,基于VS2015 C++ 实现,仿雅马哈四轴机械手抓取程序,实现把两个任意摆放的物料通过视觉算法和运动控制指令定位摆放到指定的位置并拼接起来。 使用研华控制卡搭配工业相机实现,图像算法使用halcon实现,包含界面控制,图像采集,手动控制,图像建模,路径规划,运动仿真动画。 对需要做低成本替代进口机器人的四轴运动视觉方案的朋友具有极高的参考价值。
图表分类ppt
stm32 esp32 can大于8字节分包传输协议,支持ping节点功能
《PHP-Redis中文帮助手册》是由我突发灵感所编撰的参考资料。在编撰过程中,部分翻译内容参考了网络上的众多资料。遗憾的是,由于难以追溯,我无法确切知晓某些翻译内容的原始作者。在此,我向所有可能的贡献者表示感谢。 我自知英语水平和对Redis的使用经验都处于中等水平,因此手册中难免存在翻译误解和函数分类错误。我恳请读者们宽容使用此手册。同时,我热切期盼在文档翻译方面有经验的专家能够提供帮助。如果您有更优质的翻译,请不吝赐教,我将及时更新手册内容。我期待与大家进行更深入的交流。
===如资源质量问题,可半价退款,代下全网资源,价格公道==== 【JavaEE人事管理系统详解】 JavaEE是一个广泛应用的企业级开发平台,它由Java SE(标准版)扩展而来,专为构建分布式、多层架构的应用而设计。在这个“jsp+servlet+tomcat+mysql的javaee人事管理系统”中,我们主要探讨四个关键组件:JSP(JavaServer Pages)、Servlet、Tomcat服务器以及MySQL数据库。 1. **JSP**:JavaServer Pages是JavaEE平台的一部分,用于创建动态网页。开发者可以在HTML页面中嵌入Java代码,使得网页能够与服务器进行交互,处理用户请求。在人事管理系统中,JSP通常用于展示数据,如员工信息、部门列表等,并能根据用户的操作(如搜索、添加、编辑、删除员工)进行动态更新。 2. **Servlet**:Servlet是Java编写的服务器端程序,用于扩展Web服务器的功能。在本系统中,Servlet接收来自JSP的请求,执行业务逻辑,例如处理数据验证、计算、数据库操作等,然后将结。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
新能源plc程序 欧姆龙nj系列程序,注释完整,面向对象的编程方法 ,多轴控制,凸轮同步,设备已经正常使用软件资料出概不 此项目程序已经实际设备成熟稳定应用,程序注释详细、非常适合用来欧姆龙NJ PLC大型项目学习,包括plc程序程序运用ST语言和FB块,可用作欧姆龙NJ大型项目编程模板直接调用
BDE_Installer_for_RAD_Studio_10.2_Tokyo.7z
内容概要:本文档是关于希尔密码加密与解密的实验报告,旨在帮助学生理解和掌握这一经典的密码学技术。通过随机生成密钥矩阵并实施明文的加密与解密步骤,加深对希尔密码运作机制的理解,并通过文件I/O操作巩固数据处理技能。此外,在实验过程中,作者还深入探讨了对合密钥的特点,分析为何这种类型的密钥不适合应用于实际情况,并给出了可能存在的具体对合密钥总数的求解方法。 适用人群:适用于计算机科学专业、信息安全方向的学生或研究人员,特别是那些有兴趣深入了解经典密码系统及其实现细节的人群。 使用场景及目标:本报告不仅作为课程作业的一部分提交,而且也可以作为研究参考资料使用。读者可以通过这份详细的报告学习到希尔密码的具体实现步骤,包括但不限于密钥的选择、密文的创建和恢复。此外,针对实验中存在的局限性进行了讨论,为后续相关领域的进一步探索提供了思考方向。 其他说明:文档详细记录了一个完整的实验流程,涵盖从实验环境搭建、关键步骤演示到最后结果呈现全过程,并就实际遇到的问题给出改进意见。对于初次接触此类概念的学习者来说非常友好。附录中还包括了C语言源码用于检测2*2维度内的所有有效'对合密钥’实例,证明数学推导的结果。
【问题描述】 请根据给定的文法设计并实现语法分析程序,能基于上次作业的词法分析程序所识别出的单词,识别出各类语法成分。输入输出及处理要求如下: (1)需按文法规则,用递归子程序法对文法中定义的所有种语法成分进行分析; (2)为了方便进行自动评测,输入的被编译源文件统一命名为testfile.txt;输出的结果文件统一命名为output.txt ;结果文件中包含如下两种信息: 1)按词法分析识别单词的顺序,按行输出每个单词的信息(要求同词法分析作业,对于预读的情况不能输出)。 2)在下列高亮显示的语法分析成分分析结束前,另起一行输出当前语法成分的名字,形如“<常量说明>”(注:未要求输出的语法成分仍需要分析)
模型及MATLAB代码:考虑配送优先级的单服务点无人车配送路径优化问题 关键词:遗传算法、路径配送优化 完整模型+代码+注释 主要内容:以配送时间最短及物资满足率最高为目标,构建带时间和容量约束VRP模型,在模型的基础上,结合遗传算法,通过MATLAB对模型求解,得出配送最短时间、最优满足率等数据。 服务内容:脚本 工具 部分展示如下:
一款适用于LDO ,DC-DC的软启动电路, 基于tsmc.18,电路有设计报告 电路: 电路+设计报告 电路+设计报告+hspice仿真脚本
复现模拟 火、粒子群算法解约束最优化问题 内容: 程序一:模拟 火算法SA算法求解附图所示变速箱设计带约束最优化实际工程问题的自编MATLAB程序。 程序二:粒子群算法PSO算法求解附图所示变速箱设计带约束最优化实际工程问题的自编MATLAB程序。