java读写excel文件




/**
 * 使用jxl.jar包
 */

import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
import java.util.List;
import java.util.ArrayList;
import jxl.Workbook;
import jxl.Sheet;
import jxl.Cell;
import jxl.CellType;
import jxl.write.Label;
import jxl.write.Number;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WritableFont;

public class MainExcel {

 /**
  * @param dirPath:文件要保存的目录
  * @param fileName:文件要保存的文件名
  * @param sheetTitle:报表名称
  * @param title:报表的题目
  * @param columnTitle:列名集合(类型为List)
  * @param text:正文数据(类型为两级嵌套List)
  *            return boolean
  */
 public boolean writeExcel(String dirPath, String fileName,
   String sheetTitle, String title, List columnTitle, List text) {
  WritableWorkbook workBook = null;
  WritableSheet sheet = null;
  if (dirPath == null || "".equals(dirPath) || fileName == null
    || "".equals(fileName)) {
   System.out.println("建立excel文件失败:路径或文件名为空");
   return false;
  }
  File filePath = new File(dirPath);
  {
   if (!filePath.exists()) {
    // 如果文件要保存的目录不存在则产生该目录
    if (!filePath.mkdir()) {
     System.out.println("建立excel文件失败:无法建立该目录");
     return false;
    }
   }
  }
  // 在该目录下产生要保存的文件名
  String excelPath = dirPath + "/" + fileName + ".xls";
  File excelFile = new File(excelPath);
  // 以下开始输出到EXCEL
  try {
   if (!excelFile.exists()) {
    if (!excelFile.createNewFile()) {
     System.out.println("建立excel文件失败:建立excel文件发生异常");
     return false;
    }
   }
   /** **********创建工作簿************ */
   workBook = Workbook.createWorkbook(excelFile);
   /** **********创建工作表************ */
   if ("".equals(sheetTitle) || sheetTitle == null) {
    sheet = workBook.createSheet("Sheet1", 0);
   } else {
    sheet = workBook.createSheet(sheetTitle, 0);
   }
   //SheetSettings sheetSet = sheet.getSettings();
   //sheetSet.setProtected(false);
   /** ************设置单元格字体************** */
   WritableFont headFont = new WritableFont(WritableFont.ARIAL, 14);
   WritableFont normalFont = new WritableFont(WritableFont.ARIAL, 12);
   /** ************以下设置几种格式的单元格************ */
   // 用于表头
   WritableCellFormat wcf_head = new WritableCellFormat(headFont);
   wcf_head.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
   wcf_head.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
   wcf_head.setAlignment(Alignment.CENTRE); // 文字水平对齐
   wcf_head.setWrap(false); // 文字是否换行

   // 用于正文居中
   WritableCellFormat wcf_center = new WritableCellFormat(normalFont);
   wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
   wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
   wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐
   wcf_center.setWrap(false); // 文字是否换行

   /** ************单元格格式设置完成****************** */

   /** ***************以下是报表的内容********************* */
   // 合并单元格设置excel的题目
   int x = 0;
   if ("".equals(title) || title == null) {
    title = "";
    x = 0;
   } else {
    if (columnTitle != null && columnTitle.size() > 0) {
     sheet.mergeCells(0, 0, columnTitle.size() - 1, 0);
     sheet.addCell(new Label(0, 0, title, wcf_head));
     x = 1;
    } else if (text != null && text.size() > 0
      && ((List) text.get(0)).size() > 0) {
     sheet.addCell(new Label(0, ((List) text.get(0)).size() - 1,
       title, wcf_head));
     x = 1;
    } else {
     sheet.addCell(new Label(0, 0, title, wcf_head));
     x = 1;
    }
   }
   // 设置列名
   if (columnTitle != null && columnTitle.size() > 0) {
    for (int i = 0; i < columnTitle.size(); i++) {
     sheet.addCell(new Label(i, x, String.valueOf(columnTitle
       .get(i)), wcf_center));
    }
    x = x + 1;
   }

   // 写入正文数据
   if (text != null && text.size() > 0) {
    for (int i = 0; i < text.size(); i++) {
     List content = (List) text.get(i);
     if (content != null && content.size() > 0) {
      for (int j = 0; j < content.size(); j++) {
       String data = String.valueOf(content.get(j));
       // 判断数据类型
       if (content.get(j) instanceof String) {
        sheet.addCell(new Label(j, x + i, data,
          wcf_center));
       } else if (content.get(j) instanceof Integer) {
        Number numberLabel = new Number(j, x + i,
          Integer.parseInt(data), wcf_center);
        sheet.addCell(numberLabel);
       } else if (content.get(j) instanceof Float) {
        Number numberLabel = new Number(j, x + i, Float
          .parseFloat(data), wcf_center);
        sheet.addCell(numberLabel);
       } else if (content.get(j) instanceof Double) {
        Number numberLabel = new Number(j, x + i,
          Double.parseDouble(data), wcf_center);
        sheet.addCell(numberLabel);
       } else if (content.get(j) instanceof Long) {
        Number numberLabel = new Number(j, x + i, Long
          .parseLong(data), wcf_center);
        sheet.addCell(numberLabel);
       } else if (content.get(j) instanceof Short) {
        Number numberLabel = new Number(j, x + i, Short
          .parseShort(data), wcf_center);
        sheet.addCell(numberLabel);
       } else if (content.get(j) instanceof Boolean) {
        sheet.addCell(new Label(j, x + i, data,
          wcf_center));
       } else if (content.get(j) instanceof Byte) {
        sheet.addCell(new Label(j, x + i, data,
          wcf_center));
       } else {
        try {
         Number numberLabel = new Number(j, x + i,
           Double.parseDouble(data),
           wcf_center);
         sheet.addCell(numberLabel);
        } catch (Exception ex) {
         sheet.addCell(new Label(j, x + i, data,
           wcf_center));
        }
       }
       sheet.setColumnView(j, data.length() + 10);
      }
     }
    }
   }
   /** **********以上所写的内容都是写在缓存中的,下一句将缓存的内容写到文件中******** */
   workBook.write();
  } catch (Exception e) {
   System.out.println("建立excel文件失败:" + e.getMessage());
   return false;
  } finally {
   /** *********关闭文件************* */
   try {
    if (workBook != null) {
     workBook.close();
    }
   } catch (Exception ex) {
    System.out.println("关闭文件流失败:" + ex.getMessage());
    return false;
   }
  }
  return true;
 }

 /**
  * @param excelFileName:excel文件的具体路径+文件名
  *            return List(类型为两级嵌套List)
  */
 public List readExcel(String excelFileName) {
  InputStream stream = null;
  Workbook workBook = null;
  List data = new ArrayList();
  if (excelFileName == null || "".equals(excelFileName)) {
   System.out.println("读取excel文件失败:路径或文件名为空");
   return null;
  }
  File file = new File(excelFileName);
  if (!file.exists()) {
   System.out.println("读取excel文件失败:路径或文件名不存在");
   return null;
  }
  try {
   stream = new FileInputStream(file);
   workBook = Workbook.getWorkbook(stream);
   Sheet sheet = workBook.getSheet(0);
   int columns = sheet.getColumns();
   int rows = sheet.getRows();
   for (int i = 0; i < rows; i++) {
    List row = new ArrayList();
    for (int j = 0; j < columns; j++) {
     Cell cell = sheet.getCell(j, i);
     String cellValue = cell.getContents();
     if (cell.getType() == CellType.NUMBER) {
      try {
       Integer intCell = Integer.valueOf(cellValue);
       row.add(intCell);
      } catch (Exception ex) {
       Double doubleCell = Double.valueOf(cellValue);
       row.add(doubleCell);
      }
     } else {
      row.add(cellValue);
     }
    }
    data.add(row);
   }
  } catch (Exception e) {
   System.out.println("读取excel文件失败:" + e.getMessage());
   return null;
  } finally {
   /** *********关闭流和工作簿************* */
   try {
    if (workBook != null) {
     workBook.close();
    }
    if (stream != null) {
     stream.close();
    }
   } catch (Exception ex) {
    System.out.println("关闭文件流失败:" + ex.getMessage());
    return null;
   }
  }
  return data;
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据来源:中经数据库 主要指标110多个(全部都是纯粹的 市辖区 指标),大致是: GDP GDP增速 第一产业增加值占GDP比重 第二产业增加值占GDP比重 第三产业增加值占GDP比重 人均GDP 社会消费品零售总额 固定资产投资(不含农户) 新设外商投资企业数_外商直接投资 实际利用外资金额(美元) 一般公共预算收入 一般公共预算支出 一般公共预算支出_教育 一般公共预算支出_科学技术 金融机构人民币各项存款余额_个人储蓄存款 金融机构人民币各项存款余额 金融机构人民币各项贷款余额 规模以上工业企业单位数 规模以上工业企业单位数_内资企业 规模以上工业企业单位数_港澳台商投资企业 规模以上工业企业单位数_外商投资企业 规模以上工业总产值 规模以上工业总产值_内资企业 规模以上工业总产值_港澳台商投资企业 规模以上工业总产值_外商投资企业 规模以上工业企业流动资产合计 规模以上工业企业固定资产合计 规模以上工业企业利润总额 规模以上工业企业应交增值税 规模以上工业企业主营业务税金及附加 户籍人口数 年均户籍人口数 户籍人口自然增长率 第一产业就业人员占全部城镇单位就业人员比重 第二产业就业人员占全部城镇单位就业人员比重 第三产业就业人员占全部城镇单位就业人员比重 城镇非私营单位就业人员数 城镇非私营单位就业人员数_第一产业 城镇非私营单位就业人员数_第二产业 城镇非私营单位就业人员数_第三产业 城镇非私营单位就业人员数_农、林、牧、渔业 城镇非私营单位就业人员数_采矿业 城镇非私营单位就业人员数_制造业 城镇非私营单位就业人员数_电力、热力、燃气及水生产和供应业 城镇非私营单位就业人员数_建筑业 城镇非私营单位就业人员数_批发和零售业 城镇非私营单位就业人员数_交通运输、仓储和邮政业 城镇非私营单位就业人员数_住宿和餐饮业 城镇非私营单位就业人员数_信息传输、软件和信息技术服务业 城镇非私营单位就业人员数_金融业 城镇非私营单位就业人员数_房地产业 城镇非私营单位就业人员数_租赁和商务服务业 城镇非私营单位就业人员数_科学研究和技术服务业 城镇非私营单位就业人员数_水利、环境和公共设施管理业 城镇非私营单位就业人员数_居民服务、修理和其他服务业 城镇非私营单位就业人员数_教育 城镇非私营单位就业人员数_卫生和社会工作 城镇非私营单位就业人员数_文化、体育和娱乐业 城镇非私营单位就业人员数_公共管理、社会保障和社会组织 城镇非私营单位在岗职工平均人数 城镇就业人员数_私营企业和个体 城镇非私营单位在岗职工工资总额 城镇非私营单位在岗职工平均工资 城镇登记失业人员数 建成区面积 建设用地面积 建设用地面积_居住用地 液化石油气供气总量 液化石油气供气总量_居民家庭 人工煤气、天然气供气总量 人工煤气、天然气供气总量_居民家庭 液化石油气用气人口 人工煤气、天然气用气人口 城市公共汽电车运营车辆数 城市出租汽车运营车辆数 城市公共汽电车客运总量 道路面积 排水管道长度 建成区绿化覆盖面积 建成区绿化覆盖率 绿地面积 公园绿地面积 维护建设资金支出 土地面积 生活用水供水量 供水总量 全社会用电量 城乡居民生活用电量 工业生产用电量 房地产开发投资 房地产开发投资_住宅 限额以上批发和零售业法人单位数 限额以上批发和零售业商品销售总额 普通中学学校数 中等职业教育学校数 普通小学学校数 普通高等学校专任教师数 普通中学专任教师数 中等职业教育专任教师数 普通小学专任教师数 普通高等学校在校生数 普通中学在校生数 中等职业教育在校生数 普通小学在校生数 电视节目综合人口覆盖率 公共图书馆总藏量_图书 医疗卫生机构数_医院和卫生院 卫生人员数_执业(助理)医师 医疗卫生机构床位数_医院和卫生院 城镇职工基本养老保险参保人数 职工基本医疗保险参保人数 失业保险参保人数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值