1.export函数


          
          
//导出文件接口
public String export(){
return this. myExport( exportList);
}
  • 1.
  • 2.
  • 3.
  • 4.

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)组成。​

#yyds干货盘点#java导出excel文件_i++


          
          
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.