java中如何导出word

Python011

java中如何导出word,第1张

如果电脑里装的有WORD,可以通过JS新建一个WORD,并把页面文件拷贝进去。我这有操作Excel的,word的差不多。<input type="button" onclick="javascript:method1('tableExcel')" value="导入到EXCEL"> <SCRIPT LANGUAGE="javascript"> function method1(tableid) {//整个表格拷贝到EXCEL中 var curTbl = document.getElementById(tableid) var oXL = new ActiveXObject("Excel.Application") //创建AX对象excel var oWB = oXL.Workbooks.Add() //获取workbook对象 var oSheet = oWB.ActiveSheet //激活当前sheet var sel = document.body.createTextRange() sel.moveToElementText(curTbl) //把表格中的内容移到TextRange中 sel.select() //全选TextRange中内容 sel.execCommand("Copy") //复制TextRange中内容oSheet.Paste() //粘贴到活动的EXCEL中 oXL.Visible = true //设置excel可见属性 } function method2(tableid) //读取表格中每个单元到EXCEL中 { var curTbl = document.getElementById(tableid) var oXL = new ActiveXObject("Excel.Application") //创建AX对象excel var oWB = oXL.Workbooks.Add() //获取workbook对象 var oSheet = oWB.ActiveSheet //激活当前sheet var Lenr = curTbl.rows.length //取得表格行数 for (i = 0i <Lenri++) { var Lenc = curTbl.rows(i).cells.length //取得每行的列数 for (j = 0j <Lencj++) { oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText //赋值 } } oXL.Visible = true //设置excel可见属性 } function getXlsFromTbl(inTblId, inWindow) { try { var allStr = "" var curStr = "" //alert("getXlsFromTbl") if (inTblId != null &&inTblId != "" &&inTblId != "null") { curStr = getTblData(inTblId, inWindow) } if (curStr != null) { allStr += curStr } else { alert("你要导出的表不存在!") return } var fileName = getExcelFileName() doFileExport(fileName, allStr) } catch(e) { alert("导出发生异常:" + e.name + "->" + e.description + "!") } } function getTblData(inTbl, inWindow) { var rows = 0 //alert("getTblData is " + inWindow) var tblDocument = document if (!!inWindow &&inWindow != "") { if (!document.all(inWindow)) { return null } else { tblDocument = eval(inWindow).document } } var curTbl = tblDocument.getElementById(inTbl) var outStr = "" if (curTbl != null) { for (var j = 0j <curTbl.rows.lengthj++) { //alert("j is " + j) for (var i = 0i <curTbl.rows[j].cells.lengthi++) { //alert("i is " + i) if (i == 0 &&rows >0) { outStr += " \t" rows -= 1 } outStr += curTbl.rows[j].cells[i].innerText + "\t" if (curTbl.rows[j].cells[i].colSpan >1) { for (var k = 0k <curTbl.rows[j].cells[i].colSpan - 1k++) { outStr += " \t" } } if (i == 0) { if (rows == 0 &&curTbl.rows[j].cells[i].rowSpan >1) { rows = curTbl.rows[j].cells[i].rowSpan - 1 } } } outStr += "\r\n" } } else { outStr = null alert(inTbl + "不存在!") } return outStr } function getExcelFileName() { var d = new Date() var curYear = d.getYear() var curMonth = "" + (d.getMonth() + 1) var curDate = "" + d.getDate() var curHour = "" + d.getHours() var curMinute = "" + d.getMinutes() var curSecond = "" + d.getSeconds()if (curMonth.length == 1) { curMonth = "0" + curMonth } if (curDate.length == 1) { curDate = "0" + curDate } if (curHour.length == 1) { curHour = "0" + curHour } if (curMinute.length == 1) { curMinute = "0" + curMinute } if (curSecond.length == 1) { curSecond = "0" + curSecond } var fileName = "leo_zhang" + "_" + curYear + curMonth + curDate + "_" + curHour + curMinute + curSecond + ".csv" //alert(fileName) return fileName } function doFileExport(inName, inStr) { var xlsWin = null if (!!document.all("glbHideFrm")) { xlsWin = glbHideFrm } else { var width = 6 var height = 4 var openPara = "left=" + (window.screen.width / 2 - width / 2) + ",top=" + (window.screen.height / 2 - height / 2) + ",scrollbars=no,width=" + width + ",height=" + height xlsWin = window.open("", "_blank", openPara) } xlsWin.document.write(inStr) xlsWin.document.close() xlsWin.document.execCommand('Saveas', true, inName) xlsWin.close() } </SCRIPT>]

首先我用的技术是 poi

这是代码,一个工具类得调用

public class WordUtil {

/**

* 基于模板文件导出 word 文档,此方法主要是用来处理文档中需要替换的文本内容,对图片和表格无效

*

* @param templatePath

*模板文件的路径,要求路径中要包含全名,并且模板文件只能是 07 及以上格式,即 docx 的文件

* @param destFilePath

*导出文件的存放路径,包含文件名,例如,E:/test/小区公告.docx

* @param data

*用来替换文档中预定义的字符串,要求预定义的字符串与 data 中的 key 值要相同

*/

public static void exportWordByTemplate(String templatePath,

String destFilePath, Map<String, String>data) {

FileOutputStream out = null

XWPFDocument doc = null

try {

doc = new XWPFDocument(POIXMLDocument.openPackage(templatePath))

List<XWPFRun>listRun

List<XWPFParagraph>listParagraphs = doc.getParagraphs()

for (int i = 0i <listParagraphs.size()i++) {

listRun = listParagraphs.get(i).getRuns()

for (int j = 0j <listRun.size()j++) {

if (data.get(listRun.get(j).getText(0)) != null) {

String val = data.get(listRun.get(j).getText(0))

listRun.get(j).setText(val, 0)

}

}

}

File destFile = new File(destFilePath)

if (!destFile.getParentFile().exists()) {

destFile.getParentFile().mkdirs()

}

out = new FileOutputStream(destFilePath)

doc.write(out)

} catch (IOException e) {

e.printStackTrace()

} finally {

try {

if (out != null)

out.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

/**

* 基于模板文件导出 word 文档,该方法支持03格式,但是此方法只能保留文档内容,不能保留文档中的样式和图片,建议将模板使用 07 的格式保存

*

* @param templatePath

*模板文件的路径

* @param destFilePath

*导出文件的存放路径,包含文件名,例如,E:/test/小区公告.doc

* @param data

*用来替换文档中预定义的字符串,要求预定义的字符串与 data 中的 key 值要相同

*/

public static void export03WordByTemplate(String templatePath,

String destFilePath, Map<String, String>data) {

try {

WordExtractor doc = new WordExtractor(new FileInputStream(

templatePath))

String content = doc.getText()

for (String key : data.keySet()) {

content = content.replaceAll(key, data.get(key))

}

byte b[] = content.getBytes()

ByteArrayInputStream bais = new ByteArrayInputStream(b)

POIFSFileSystem fs = new POIFSFileSystem()

DirectoryEntry directory = fs.getRoot()

directory.createDocument("WordDocument", bais)

FileOutputStream ostream = new FileOutputStream(destFilePath)

fs.writeFilesystem(ostream)

bais.close()

ostream.close()

} catch (FileNotFoundException e) {

e.printStackTrace()

} catch (IOException e) {

e.printStackTrace()

}

}

public static void main(String[] args) throws Exception {

Map<String, String>maps = new HashMap<String, String>()

maps.put("appellation", "万达公寓业主:")

maps.put(

"main_body",

"输出的内容")

maps.put("date", "2013年1月23日")

exportWordByTemplate("E:/sss 2.docx", "E:/test/test.doc", maps)

}

}

"E:/sss 2.docx模板存放的地址。

E:/test/test.doc 新生成的地址。