1.export函数
2.导出列名
private
String
myExport(
List
<
BusinessDept
>
list){
com.
bronzesoft.
power.
tools.
json.
JSONObject
info
=
new
com.
bronzesoft.
power.
tools.
json.
JSONObject();
try{
List
<
String
>
headList
=
new
ArrayList
<
String
>(
Arrays.
asList(
"年",
"月",
"部门",
"部门负责人",
"经营值",
"收入",
"支出",
"填报工时",
"标准工时",
"经营参数"));
Commonutil.
export(
list,
headList,
"部门经营总览导出");
info
=
Commonutil.
setInfo(
info,
"部门经营总览导出");
}
catch (
Exception
e){
LogUtil.
error(
this.
getClass().
getName()
+
".exportExcel()",
e);
}
return
info.
toString();
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
3.export实现方法
首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(XSSFWorkbook),一个workbook可以有多个sheet(XSSFSheet)组成,一个sheet是由多个row(XSSFRow)组成,一个row是由多个cell(XSSFCell)组成。
public
static
<
T
>
boolean
export(
List
<
T
>
list,
List
<
String
>
headList,
String
fileName){
return
myExport(
list,
headList,
fileName,
com.
bronzesoft.
rdm.
platform.
util.
Constants.
PATH
+
com.
bronzesoft.
power.
platform.
Constants.
TEMPFOLDER_DIR );
}
//将list导出为excel,文件名为fileName
public
static
<
T
>
boolean
myExport(
List
<
T
>
list,
List
<
String
>
headList,
String
fileName,
String
path){
try{
if(
!
checkListAndHead(
list,
headList)){
LogUtil.
info(
"head的长度有问题,导出的文件不正确" );
}
File
file
=
new
File(
path
+
File.
separator
+
fileName
+
".xlsx");
if(
!
file.
exists()) {
file.
createNewFile();
}
//创建对应excel文件,存储路径path待确定
XSSFWorkbook
workBook
=
new
XSSFWorkbook();
//创建一个excel的sheet页
XSSFSheet
sheet
=
workBook.
createSheet(
fileName);
XSSFRow
row
=
null;
XSSFCell
cell
=
null;
Map
<
String,
CellStyle
>
styles
=
StyleUtil.
createStyles(
workBook);
//表头样式
CellStyle
headCenterIndex
=
styles.
get(
"headCenter");
//列的样式居中,背景颜色为白色
CellStyle
center
=
styles.
get(
"centerWhite");
row
=
sheet.
createRow(
0);
//表头数据
for (
int
i
=
0;
i
<
headList.
size();
i
++) {
//创建列
cell
=
row.
createCell(
i);
//设置列的value
cell.
setCellValue(
headList.
get(
i));
//设置列的样式
cell.
setCellStyle(
headCenterIndex);
}
//表格数据
//写入表格数据
String
codeName
=
"";
int
rownum
=
1;
T
obj
=
null;
for(
int
i
=
0;
i
<
list.
size();
i
++){
obj
=
list.
get(
i);
if(
null
!=
obj){
Field[]
fields
=
obj.
getClass().
getDeclaredFields();
row
=
sheet.
createRow(
rownum);
for(
int
j
=
0;
j
<
fields.
length;
j
++){
fields[
j].
setAccessible(
true);
codeName
=
String.
valueOf(
fields[
j].
get(
obj));
//创建第j列
cell
=
row.
createCell(
j);
cell.
setCellValue(
Commonutil.
getStringVal(
codeName));
cell.
setCellStyle(
center);
}
}
rownum
++;
}
// //i代表列,设置列的宽度
// for (int i = 0; i < headList.size(); i++) {
// if(i == 0){
// sheet.setColumnWidth(i, 2000);
// }else if(i == 1 || i == 3){
// sheet.setColumnWidth(i, 6000);
// }else{
// sheet.setColumnWidth(i, 4000);
// }
// }
//将文件写到临时目录
FileOutputStream
out
=
new
FileOutputStream(
file);
workBook.
write(
out);
}
catch (
Exception
e){
LogUtil.
error(
fileName
+
"export失败" );
}
return
true;
}
//检查head的size是否符合规范
public
static
<
T
>
boolean
checkListAndHead(
List
<
T
>
list,
List
<
String
>
headList){
if(
list.
size()
>
0){
T
t
=
list.
get(
0);
if(
getColumnCount(
t)
!=
headList.
size()){
LogUtil.
info(
"head的长度有问题" );
return
false;
}
}
return
true;
}
//获取一个对象成员变量的个数
public
static
<
T
>
int
getColumnCount(
T
t){
Field[]
fields
=
t.
getClass().
getDeclaredFields();
int
count
=
fields.
length;
return
count;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
4.前端对接
public
static
JSONObject
setInfo(
JSONObject
info,
String
fileName)
throws
Exception {
Storage
s
=
Commonutil.
getDefaultStorage();
info.
put(
"port",
String.
valueOf(
s.
getPort()));
info.
put(
"dirAddress",
Base64Util.
encode(
com.
bronzesoft.
rdm.
platform.
util.
Constants.
PATH));
info.
put(
"address",
Base64Util.
encode(
com.
bronzesoft.
power.
platform.
Constants.
TEMPFOLDER_DIR
+
File.
separator
+
fileName
+
".xlsx"));
info.
put(
"name",
Base64Util.
encode(
fileName));
info.
put(
"extendName",
"xlsx");
return
info;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
5.前端代码
function
doExport(){
synAjax
.
tabCall(
"com.bronzesoft.rdm.SeDeptTotalTab",
"export",
null,
function(
data){
doDownload(
data);
});
}
function
doDownload(
data){
console
.
log(
'data',
data)
r
=
eval(
'('
+
data
+
')');
$(
"#_file_dir")
.
val(
r
.
dirAddress);
$(
"#_file_address")
.
val(
r
.
address);
$(
"#_file_name")
.
val(
r
.
name);
$(
"#_file_extname")
.
val(
r
.
extendName);
if (
$
.
browser
.
safari) {
$(
"#_file_downform")
.
attr(
"target",
""); }
var
servlet
=
powerPath
+
"download";
$(
"#_file_downform")
.
attr(
"action",
servlet)
.
submit();
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.