1 通过JS下载:
通过JS下载的缺点就是烦!!真是烦,毕竟没有各种插件供你使用。本文只提供两种格式的文件下载;
一 .txt文件
------------------------------------------------------------------------------------------------------code start
var isIE = (navigator.userAgent.indexOf('MSIE') >= 0);
if (isIE) {
var strHTML = _txt;
var winSave = window.open();
winSave.document.open("text","utf-8");
winSave.document.write(strHTML);
winSave.document.execCommand("SaveAs",true,"code.txt");
winSave.close();
} else {
var elHtml = _txt;
var mimeType = 'text/plain';
$('#createInvote').attr('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(elHtml));
document.getElementById('createInvote').click();
}
------------------------------------------------------------------------------------------------------code END
2 .excel文件
------------------------------------------------------------------------------------------------------code start
function exportTable(tableid) {if(getExplorer()=='ie')
{
var curTbl = document.getElementById(tableid);
var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var xlsheet = oWB.Worksheets(1);
var sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
sel.select();
sel.execCommand("Copy");
xlsheet.Paste();
oXL.Visible = true;
try {
var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
} catch (e) {
print("Nested catch caught " + e);
} finally {
oWB.SaveAs(fname);
oWB.Close(savechanges = false);
oXL.Quit();
oXL = null;
idTmr = window.setInterval("Cleanup();", 1);
}
}
else
{
tableToExcel(tableid)
}
}
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',
base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },
format = function(s, c) {
return s.replace(/{(\w+)}/g,
function(m, p) { return c[p]; }) }
return function(table, name) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()
------------------------------------------------------------------------------------------------------------------code END
二 后台代码的方式:
excel: POI的方式:
//创建Excel工作薄
XSSFWorkbook workbook = new XSSFWorkbook();
//创建一个sheet页
XSSFSheet sheet0 = workbook.createSheet("第一页");
//创建第一行标题行,从0开始
XSSFRow row0 = sheet0.createRow(0);
//设置行高40px
row0.setHeight((short)(15.625*32));
//设置表头
List<String> title=data.get(0);
for (int i = 0; i < title.size(); i++) {
//设置列宽100px
sheet0.setColumnWidth(i, (int)35.7*100);
//创建第一行的第一格(第一列)
Cell cell = row0.createCell(i);
XSSFCellStyle cs=workbook.createCellStyle();
cs.setFillBackgroundColor(IndexedColors.SEA_GREEN.index);
cs.setFillForegroundColor(IndexedColors.SEA_GREEN.index);
cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
XSSFFont font = workbook.createFont();
font.setFontName("黑体");
font.setFontHeightInPoints((short) 13);//设置字体大小
cs.setFont(font);//选择需要用到的字体格式
cell.setCellValue(title.get(i));
cell.setCellStyle(cs);
}
//设置数据
for (int i = 1; i < data.size(); i++) {
//创建第二行的内容行
XSSFRow row1 = sheet0.createRow(i);
row1.setHeightInPoints((float)20);
List<String> nData= data.get(i);
for (int j = 0; j < nData.size(); j++) {
//创建第一行的第一格(第一列)
Cell cell = row1.createCell(j);
cell.setCellValue(nData.get(j));
}
}
try {
//创建Excel文件,并将内容写入(如果路径包含不存在的文件夹,必须创建,不然包找不到文件异常)
//通过文件输出流将内容写入文件
//将内容写入
return workbook;
//关闭流
} catch (Exception e) {
e.printStackTrace();
}
//第二读取文件
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-disposition", "attachment;filename=protocolFile.xls");
OutputStream ouputStream;
try {
ouputStream = response.getOutputStream();
workbook.write(ouputStream);
ouputStream.flush();
ouputStream.close();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}