周报导入导出(excel)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 *
* @ClassName: ExcelWriteForWeeklyPaper
* @Description: 周报导出
* @author yabo.liu
* @date 2019年8月23日 下午2:08:57
*
 */
public class ExcelWriteForWeeklyPaper {
    public static void main(String[] args) {
        //读取excel路径
        String excelPath = "E:\\excel\\new-weekly-list.xlsx";
        System.out.println("excel路径为:"+excelPath);
        //读取excel数据
        JSONArray jsonArray = getExcelData1(excelPath);
        //往excel里写数据,key需要跟sheet页的key相同,值为需要写的数据
        writeWeeklyPaper(jsonArray);
    }

    public static JSONArray getExcelData1(String excelPath){
        JSONArray jsonArray = new JSONArray();
        try {
            File excel = new File(excelPath);
            if (excel.isFile() && excel.exists()) {   //判断文件是否存在
                String[] split = excel.getName().split("\\.");  //.是特殊字符,需要转义!!!!!
                Workbook wb;
                //根据文件后缀(xls/xlsx)进行判断
                if ( "xls".equals(split[1])){
                    FileInputStream fis = new FileInputStream(excel);   //文件流对象
                    wb = new HSSFWorkbook(fis);
                }else if ("xlsx".equals(split[1])){
                    wb = new XSSFWorkbook(excel);
                }else {
                    System.out.println("文件类型错误!");
                    return null;
                }
                //开始解析
                Sheet sheet = wb.getSheetAt(0);//读取sheet 0
                int firstRowIndex = sheet.getFirstRowNum()+1;//第一行是列名,所以不读
                int lastRowIndex = sheet.getLastRowNum();
                for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) {//遍历行
                    JSONObject jsonObject = new JSONObject();
                    Row row = sheet.getRow(rIndex);
                    if (row != null) {
                        int firstCellIndex = row.getFirstCellNum();
                        int lastCellIndex = row.getLastCellNum();
                        for (int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++) {//遍历列
                            Cell cell = row.getCell(cIndex);
                            if (cell != null) {
                                if (cIndex == 0) {
                                    jsonObject.put("idNo",cell.toString());
                                }else if (cIndex == 1){
                                    jsonObject.put("taskName",cell.toString());
                                }else if (cIndex == 2) {
                                    jsonObject.put("taskStatus",cell.toString());
                                }else if (cIndex == 3) {
                                    jsonObject.put("taskProgress",cell.toString());
                                }else if (cIndex == 4) {
                                    jsonObject.put("lastTaskStatus",cell.toString());
                                }else if (cIndex == 5) {
                                    jsonObject.put("lastTaskProgress",cell.toString());
                                }else if (cIndex == 6) {
                                    jsonObject.put("head",cell.toString());
                                }
                            }
                        }
                    }
                    jsonArray.add(jsonObject);
                }
            } else {
                System.out.println("找不到指定的文件");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonArray;
    }

    /**
     * 周报导出信息
     */
    @SuppressWarnings("unchecked")
    public static void writeWeeklyPaper(JSONArray jsonArray){
        HSSFWorkbook wb=null;
        OutputStream fileOut=null;
        try {
            //导出模板路径地址
            FileInputStream templateFileInput = new FileInputStream("E:\\excel\\weeklyPaperExportModel.xls");
            POIFSFileSystem fs = new POIFSFileSystem(templateFileInput);
            wb = new  HSSFWorkbook(fs);  

            HSSFCellStyle cellStyle = wb.createCellStyle();
            cellStyle.setBorderBottom(BorderStyle.THIN);
            cellStyle.setBorderLeft(BorderStyle.THIN);
            cellStyle.setBorderRight(BorderStyle.THIN);
            cellStyle.setBorderTop(BorderStyle.THIN);
            //从第12行开始写入
            int i = 11;
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("已上线".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(i-10), i, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), i, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), i, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), i, str2Num("G"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskStatus").toString(), i, str2Num("H"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskProgress").toString(), i, str2Num("I"),cellStyle);
                    writeStringData(wb,jsonObject.get("head").toString(), i, str2Num("J"),cellStyle);
                    i++;
                }
            }
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("待上线".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(i-10), i, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), i, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), i, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), i, str2Num("G"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskStatus").toString(), i, str2Num("H"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskProgress").toString(), i, str2Num("I"),cellStyle);
                    writeStringData(wb,jsonObject.get("head").toString(), i, str2Num("J"),cellStyle);
                    i++;
                }
            }
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("业务复核".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(i-10), i, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), i, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), i, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), i, str2Num("G"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskStatus").toString(), i, str2Num("H"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskProgress").toString(), i, str2Num("I"),cellStyle);
                    writeStringData(wb,jsonObject.get("head").toString(), i, str2Num("J"),cellStyle);
                    i++;
                }
            }
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("UAT测试".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(i-10), i, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), i, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), i, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), i, str2Num("G"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskStatus").toString(), i, str2Num("H"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskProgress").toString(), i, str2Num("I"),cellStyle);
                    writeStringData(wb,jsonObject.get("head").toString(), i, str2Num("J"),cellStyle);
                    i++;
                }
            }
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("联调".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(i-10), i, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), i, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), i, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), i, str2Num("G"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskStatus").toString(), i, str2Num("H"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskProgress").toString(), i, str2Num("I"),cellStyle);
                    writeStringData(wb,jsonObject.get("head").toString(), i, str2Num("J"),cellStyle);
                    i++;
                }
            }
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("需求确认".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(i-10), i, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), i, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), i, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), i, str2Num("G"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskStatus").toString(), i, str2Num("H"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskProgress").toString(), i, str2Num("I"),cellStyle);
                    writeStringData(wb,jsonObject.get("head").toString(), i, str2Num("J"),cellStyle);
                    i++;
                }
            }
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("需求分析".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(i-10), i, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), i, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), i, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), i, str2Num("G"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskStatus").toString(), i, str2Num("H"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskProgress").toString(), i, str2Num("I"),cellStyle);
                    writeStringData(wb,jsonObject.get("head").toString(), i, str2Num("J"),cellStyle);
                    i++;
                }
            }
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if (!"需求分析".equals(jsonObject.get("taskStatus"))&&!"需求确认".equals(jsonObject.get("taskStatus"))&&
                        !"开发".equals(jsonObject.get("taskStatus"))&&!"内部测试".equals(jsonObject.get("taskStatus"))&&
                        !"联调".equals(jsonObject.get("taskStatus"))&&!"UAT测试".equals(jsonObject.get("taskStatus"))&&
                        !"业务复核".equals(jsonObject.get("taskStatus"))&&!"待上线".equals(jsonObject.get("taskStatus"))&&
                        !"已上线".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(i-10), i, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), i, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), i, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), i, str2Num("G"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskStatus").toString(), i, str2Num("H"),cellStyle);
                    writeStringData(wb,jsonObject.get("lastTaskProgress").toString(), i, str2Num("I"),cellStyle);
                    writeStringData(wb,jsonObject.get("head").toString(), i, str2Num("J"),cellStyle);
                    i++;
                }
            }
            //将开发和内部测试的任务写到模板(下周任务计划从103行开始写入,行数根据模板确定)
            int j = 102;
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("开发".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(j-101), j, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), j, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), j, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), j, str2Num("H"),cellStyle);
                    j++;
                }
            }
            for(int a = 0; a < jsonArray.size(); a++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(a);
                if ("内部测试".equals(jsonObject.get("taskStatus"))) {
                    writeStringData(wb,""+(j-101), j, str2Num("A"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskName").toString(), j, str2Num("B"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskStatus").toString(), j, str2Num("F"),cellStyle);
                    writeStringData(wb,jsonObject.get("taskProgress").toString(), j, str2Num("H"),cellStyle);
                    j++;
                }
            }
            Date date = new Date();
            //将新的excel写入地址
            File file=new File("E:\\excel");
            OutputStream stream=null;
            stream = new FileOutputStream(new File(file, new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+".xls"));
            wb.write(stream);
        } catch (FileNotFoundException e) {
            System.out.println("周报导出excel异常");
        } catch (IOException e) {
            System.out.println("周报导出excel异常");
        }finally {
            if(wb!=null){
                wb = null;
            }
            if(fileOut!=null){
                try {
                    fileOut.close();
                } catch (IOException e) {
                    System.out.println("周报导出excel异常");
                }
            }
        }
    };

    /**
     * 向单元格写入非图片格式信息
     * @描述:这是一个实体类,提供了相应的接口,用于操作Excel,在任意坐标处写入数据。
     * @参数:String newContent:你要输入的内容
     *               int beginRow :行坐标,Excel从 0 算起
     *               int beginCol   :列坐标,Excel从 0 算起
     *               style: 单元格样式
     */
    public static void writeStringData(HSSFWorkbook wb, String newContent, int beginRow, int beginCell,HSSFCellStyle style)
    {
        HSSFSheet sheet=wb.getSheet("项目周报");
        if(wb.getSheet("项目周报")==null){
            sheet = wb.createSheet("项目周报");
        }
        HSSFRow  row  = sheet.getRow(beginRow);
        if(null == row ){
            //如果不做空判断,你必须让你的模板文件画好边框,beginRow和beginCell必须在边框最大值以内
            //否则会出现空指针异常
            row = sheet.createRow(beginRow);
        }
        HSSFCell   cell   = row.getCell(beginCell);
        if(null == cell){
            cell = row.createCell(beginCell);
        }
        if(style!=null){
            cell.setCellStyle(style);
        }
        //向单元格中放入值
        cell.setCellValue(newContent);
    }
    /**
     * 将excel列中的A、B、AA、AB等内容转换为0、1等数字
     * @param s
     * @return
     */
    private static int str2Num(String s) {
        int r = 0;
        for (int i = 0; i < s.length(); i++) {
            r = r * 26 + s.charAt(i) - ‘A‘ + 1;
        }
        return r - 1;
    }
}

原文地址:https://www.cnblogs.com/lyb0103/p/11811854.html

时间: 2024-08-30 18:29:45

周报导入导出(excel)的相关文章

Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API.      下面分享一下在对POI进行基本操作时觉得需要注意的两点:       1.POI中针对xlsx/xls是需要create different Workbook instance

导入导出Excel的Java工具类ExcelUtil

在编写ExcelUtil之前,在网上查了一些资料.java中用来处理Excel的第三方开源项目主要就是POI和JXL.poi功能强大,但是比较耗资源,对于大数据量的导入导出性能不是太好:jxl功能简单,但是性能比较好. 由于本项目的导入导出更多关注性能问题,而且jxl提供的功能基本也都够用了,于是选择了jxl作为支持. 实战 导出就是将List转化为Excel(listToExcel) 导入就是将Excel转化为List(excelToList) 导入导出中会出现各种各样的问题,比如:数据源为空

C#用Infragistics 导入导出Excel(一)

最近项目中有数据的导入导出Excel的需求,这里做简单整理. 公司用的是Infragistics的产品,付费,不需要本地安装Office. 有需要的朋友可以下载 Infragistics.2013.2.2098,提取密码:5u17 本文完整代码下载 Demo.Excel.zip 当然,我知道还有其他开源的类库来操作Excel,希望有资源的博友可以一起共享一下. Infragistics安装使用 直接安装Infragistics_WinForms_20132.msi后再项目Reference中引用

jxl导入/导出excel

转自:http://www.cnblogs.com/linjiqin/p/3540266.html 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook;

页面导入导出EXCEL

引用 using Microsoft.Office.Interop.Excel;using System.Reflection;//反射命名空间using System.IO; protected void Button1_Click(object sender, EventArgs e) { //项目引入Microsoft.office.Excel组件 //导出二大部分 //第一部分,生成EXCEL文件 //对象1 应用程序对象 Microsoft.Office.Interop.Excel.A

使用PHPExcel导入导出excel格式文件

使用PHPExcel导入导出excel格式文件 作者:zccst 由于导出使用较多,下面是导出实现过程. 第一步,将PHPExcel的源代码复制到项目的lib下 文件包括:PHPExcel.php 和 文件夹PHPExcel 源代码见附件 注1:源代码是zip格式,能在windows和linux通用. 注2:PHPExcel.zip是干净代码,可以直接引用.PHPExcel2.zip有svn记录,不适合直接引用. 第二步:在需要导出的handler页面中引用 1,在头部引入三个文件 Php代码 

(C#)利用Aspose.Cells组件导入导出excel文件

Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: [csharp] view plain copy print? public static System.Data.DataTable ReadExcel(String strFileName) { Workbook book = new Workbook(); book.Open(strFileName); Worksheet sheet = book.Worksheets[0]; Cells cells = 

【转】 (C#)利用Aspose.Cells组件导入导出excel文件

Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFileName) { Workbook book = new Workbook(); book.Open(strFileName); Worksheet sheet = book.Worksheets[0]; Cells cells = sheet.Cells; return cells.Export

php导入导出excel实例

这里实现的PHP导入导出excel功能用到的是开源PHPExcel,执行下面的操作之前请先下载该类库文件,官方网站:http://www.codeplex.com/PHPExcel,官网案例代码很多,导出pdf什么的都有,这里主要介绍PHP导入导出excel的功能,导出excel文件是office2007格式,同时兼容2003. php导入excel导入的excel文件的数据格式,截图如下:下面是将该excel文件的数据导入到数据库的具体代码 <?php require_once 'Classe

Aspose.Cells.dll引用导入导出Excel

Aspose.Cells 导入导出EXCEL 文章出处:http://hi.baidu.com/leilongbing/item/c11467e1819e5417595dd8c1 修改样式       Workbook workbook = new Workbook(); //工作簿 Worksheet sheet = workbook.Worksheets[0]; //工作表 Cells cells = sheet.Cells;//单元格 //样式2 Aspose.Cells.Style st