我要制作execl表格中套用公式求人帮忙要把所有项目名称的子项目融入在一张表格里

做excel,超实用的表格技巧,看完这些不再求人了!
我的图书馆
做excel,超实用的表格技巧,看完这些不再求人了!
做excel,超实用的表格技巧,看完这些不再求人了!
我不会告诉你,这个有多实用~
喜欢该文的人也喜欢excel表格中有很多张做好的表格,但是我想每张表格打一张纸怎么办?_百度知道
excel表格中有很多张做好的表格,但是我想每张表格打一张纸怎么办?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
yongzhiadd
yongzhiadd
你的意思是不是一个Excel里分不同的Sheet制好的表格,想一次全都打印?如果是,那先将每个表页面设置好,点打印(不要用快速打印按钮,可以用Ctrl+P调出打印对话框),在打印设置里选择打印范围为“打印整个工作薄”就能将这个Excel里的所有数据表都打印出来了
擅长:暂未定制
表格一样大的话,调整页边距就可以
anjunjieajj
anjunjieajj
采纳数:230
获赞数:483
插入分页符,对大表强制分页
rengang111
rengang111
采纳数:77
获赞数:1239
分页预览里面可以手动调整每页的打印范围
其他1条回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。今天开始养成好习惯,每次用到的技术都要记录下来,方便管理。
吸取别人的经验,转换成自己的能力。
利用excellUtils进行导出功能:
1.在pom.xml中导入依赖 ;
&!--Microsoft Office格式档案读和写 --&
&dependency&
&groupId&org.apache.poi&/groupId&
&artifactId&poi&/artifactId&
&version&3.9&/version&
&/dependency&
&dependency&
&groupId&org.apache.poi&/groupId&
&artifactId&poi-ooxml&/artifactId&
&version&3.9&/version&
&/dependency&
2.将excelUtils.java工具导入到工程中新建的util包内;
package com.system.
import java.io.F
import java.io.FileInputS
import java.io.IOE
import java.io.InputS
import java.io.OutputS
import java.lang.reflect.F
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.M
import java.math.BigD
import java.net.URLE
import java.text.ParseE
import java.text.SimpleDateF
import java.util.ArrayL
import java.util.D
import java.util.L
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import org.apache.commons.lang3.StringU
import org.apache.log4j.L
import org.apache.poi.hssf.usermodel.HSSFW
import org.apache.poi.ss.usermodel.C
import org.apache.poi.ss.usermodel.R
import org.apache.poi.ss.usermodel.S
import org.apache.poi.ss.usermodel.W
import org.apache.poi.xssf.usermodel.XSSFC
import org.apache.poi.xssf.usermodel.XSSFCellS
import org.apache.poi.xssf.usermodel.XSSFF
import org.apache.poi.xssf.usermodel.XSSFRichTextS
import org.apache.poi.xssf.usermodel.XSSFR
import org.apache.poi.xssf.usermodel.XSSFS
import org.apache.poi.xssf.usermodel.XSSFW
import com.app.core.utils.date.DateFormatU
import com.app.core.utils.number.BigDecimalU
@SuppressWarnings("all")
* @author Lianghx
public class ExcelUtils {
private static final Logger logger = Logger.getLogger(ExcelUtils.class);
* 导出excel
* @param req
* @param res
* @param headers 表头(注:表头定义的字段的与obj对应的Model定义的字段顺序必须一致)
* @param fileName 文件名
* @param sheetName 表名
* @param obj 不定参数,现在只接受一个excel要显示的Model的一个List
public static void download(HttpServletRequest req, HttpServletResponse res, String fileName, String sheetName,
String[] headers, Object... obj) {
// 设置下载请求头和文件名
setResponseHeader(req, res, fileName);
// 声明一个工作薄
XSSFWorkbook workbook = new XSSFWorkbook();
// 生成一个表格
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth(40);
// 表格字体样式
XSSFCellStyle[] styles = createStyle(workbook);
XSSFCellStyle style = styles[0];
XSSFCellStyle style2 = styles[1];
XSSFRow row = sheet.createRow(0);
// 创建表头
for (short i = 0; i & headers. i++) {
XSSFCell cell = row.createCell(i);
cell.setCellStyle(style);
XSSFRichTextString text = new XSSFRichTextString(headers[i]);
cell.setCellValue(text);
List&Object& list = (List&Object&) obj[0]; // 获取目标参数(即需要导出的数据)
for (int j = 0; j & list.size(); j++) {
XSSFRow r = sheet.createRow(j + 1);
row.setHeightInPoints(20);
Object o = list.get(j);
Field[] fields = o.getClass().getDeclaredFields(); // 获取对象的所有字段
for (int i = 0; i & fields. i++) {
Field field = fields[i];
String fieldName = field.getName(); // 得到某一字段的字段名
String getMethodName = "get" // 拼接该字段对应的get方法的方法名
+ fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
Class cls = o.getClass();
Method getMethod = cls.getMethod(getMethodName, new Class[] {});
Object target = getMethod.invoke(o, new Object[] {}); // 利用Java反射机制调用get方法获取字段对应的值
XSSFCell c = r.createCell(i);
c.setCellStyle(style2);
if (target instanceof Integer) {
c.setCellValue((Integer) target);
if (target instanceof String) {
c.setCellValue(target.toString());
} else if (target instanceof Date) {
c.setCellValue(DateFormatUtil.convertDateToDateYMDHMS((Date) target)); // 如果target为Date类型,则按该规则格式化
} else if (target instanceof Double) {
c.setCellValue(BigDecimalUtil.decimal((Double) target, 2)); // 如果target为Double类型的数据,则默认保留两位小数
} else if (target instanceof Long) {
c.setCellValue((Long) target);
} catch (IllegalAccessException e) {
logger.info(e);
} catch (IllegalArgumentException e) {
logger.info(e);
} catch (InvocationTargetException e){
logger.info(e);
} catch (NoSuchMethodException e) {
logger.info(e);
} catch (SecurityException e) {
logger.info(e);
OutputStream ouputS
ouputStream = res.getOutputStream();
workbook.write(ouputStream);
ouputStream.flush();
ouputStream.close();
} catch (IOException e) {
logger.info(e);
* 导出excel
* @param req
* @param res
* @param headers 表头
* @param properties 表头对应obj属性名(注:与表头字段顺序一致)
* @param fileName 文件名
* @param sheetName 表名
* @param obj 不定参数,现在只接受一个excel要显示的Model的一个List
public static void download(HttpServletRequest req, HttpServletResponse res, String fileName, String sheetName,
String[] headers, String properties[], Object... obj) {
// 设置下载请求头和文件名
setResponseHeader(req, res, fileName);
// 声明一个工作薄
XSSFWorkbook workbook = new XSSFWorkbook();
// 生成一个表格
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth(40);
// 表格字体样式
XSSFCellStyle[] styles = createStyle(workbook);
XSSFCellStyle style = styles[0];
XSSFCellStyle style2 = styles[1];
XSSFRow row = sheet.createRow(0);
// 创建表头
for (short i = 0; i & headers. i++) {
XSSFCell cell = row.createCell(i);
cell.setCellStyle(style);
XSSFRichTextString text = new XSSFRichTextString(headers[i]);
cell.setCellValue(text);
if (properties != null) {
List&Object& list = (List&Object&) obj[0]; // 获取目标参数(即需要导出的数据)
for (int j = 0; j & list.size(); j++) {
XSSFRow r = sheet.createRow(j + 1);
row.setHeightInPoints(20);
Object o = list.get(j);
for (int i = 0; i & properties. i++) {
String property = properties[i];
String getMethodName = "get" // 拼接该字段对应的get方法的方法名
+ property.substring(0, 1).toUpperCase() + property.substring(1);
Class cls = o.getClass();
Method getMethod = cls.getMethod(getMethodName, new Class[] {});
Object target = getMethod.invoke(o, new Object[] {}); // 利用Java反射机制调用get方法获取字段对应的值
XSSFCell c = r.createCell(i);
c.setCellStyle(style2);
if (target instanceof Integer) {
c.setCellValue((Integer) target);
}else if (target instanceof String) {
c.setCellValue(target.toString());
}else if (target instanceof Date) {
c.setCellValue(convertDateToDate((Date) target)); // 如果target为Date类型,则按该规则格式化
} else if (target instanceof Double) {
c.setCellValue(decimal((Double) target)); // 如果target为Double类型的数据,则默认保留两位小数
} else if (target instanceof Long) {
c.setCellValue((Long) target);
}else if (target instanceof BigDecimal) {
c.setCellValue(decimal(((BigDecimal) target).doubleValue()));
} catch (IllegalAccessException e) {
logger.info(e);
} catch (IllegalArgumentException e) {
logger.info(e);
} catch (InvocationTargetException e) {
logger.info(e);
} catch (NoSuchMethodException e) {
logger.info(e);
} catch (SecurityException e) {
logger.info(e);
OutputStream ouputS
ouputStream = res.getOutputStream();
workbook.write(ouputStream);
ouputStream.flush();
ouputStream.close();
} catch (IOException e) {
logger.info(e);
* 导入excel
* @param clazz 传入类对象 (字段顺序与导入的excel列顺序一致)
* @param is 文件流
* @param excelFileName 文件名称
public static &T& List&T& importExcel(Class clazz, InputStream is, String excelFileName) {
List&T& list = new ArrayList&T&();
T t = (T) create(clazz);
// 创建工作簿
Workbook workbook = createWorkbook(is, excelFileName);
// 创建工作表sheet
Sheet sheet = getSheet(workbook, 0);
// 获取sheet中数据的行数
int rows = sheet.getPhysicalNumberOfRows();
// 获取表头单元格个数
int cells = sheet.getRow(0).getPhysicalNumberOfCells();
// 利用反射,给JavaBean的属性进行赋值
Field[] fields = t.getClass().getDeclaredFields();
for (int i = 1; i & i++) {// 第一行为标题栏,从第二行开始取数据
Row row = sheet.getRow(i);
int index = 0;
while (index & cells) {
Cell cell = row.getCell(index);
if (null == cell) {
cell = row.createCell(index);
cell.setCellType(Cell.CELL_TYPE_STRING);
String value =cell.getStringCellValue();
Field field = fields[index];
field.setAccessible(true);//设置属性可访问
String type = field.getType().getName();//得到此属性的类型
if(StringUtils.isEmpty(value)){
field.set(t, null);
}else if(type.endsWith("String")){
field.set(t, value);
}else if(type.endsWith("int")||type.endsWith("Integer")){
field.set(t, Integer.parseInt(value));
}else if(type.endsWith("double")||type.endsWith("Double")){
field.set(t, Double.parseDouble(value));
}else if(type.endsWith("BigDecimal")){
field.set(t, new BigDecimal(value));
}else if(type.endsWith("boolean")||type.endsWith("Boolean")){
field.set(t, value.equals("1")?true:false);
}else if(type.endsWith("long")||type.endsWith("Long")){
field.set(t, Long.parseLong(value));
list.add(t);
t = (T) create(clazz);// 重新创建一个对象
} catch (Exception e) {
logger.error(e);
} finally {
is.close();// 关闭流
} catch (Exception e2) {
logger.error(e2);
* 导入excel
* @param clazz 传入类对象 (字段顺序与导入的excel列顺序一致)
* @param filePath 文件路径
* @param request
public static &T& List&T& importExcel(HttpServletRequest request, String filePath,Class clazz) {
List&T& list = new ArrayList&T&();
T t = (T) create(clazz);
File file = new File(filePath);
InputStream is=
is = new FileInputStream(file);
// 创建工作簿
Workbook workbook = createWorkbook(is, file.getName());
// 创建工作表sheet
Sheet sheet = getSheet(workbook, 0);
// 获取sheet中数据的行数
int rows = sheet.getPhysicalNumberOfRows();
// 获取表头单元格个数
int cells = sheet.getRow(0).getPhysicalNumberOfCells();
// 利用反射,给JavaBean的属性进行赋值
Field[] fields = t.getClass().getDeclaredFields();
for (int i = 1; i & i++) {// 第一行为标题栏,从第二行开始取数据
Row row = sheet.getRow(i);
int index = 0;
while (index & cells) {
Cell cell = row.getCell(index);
if (null == cell) {
cell = row.createCell(index);
cell.setCellType(Cell.CELL_TYPE_STRING);
String value =cell.getStringCellValue();
Field field = fields[index];
field.setAccessible(true);//设置属性可访问
String type = field.getType().getName();//得到此属性的类型
if(StringUtils.isEmpty(value)){
field.set(t, null);
}else if(type.endsWith("String")){
field.set(t, value);
}else if(type.endsWith("int")||type.endsWith("Integer")){
field.set(t, Integer.parseInt(value));
}else if(type.endsWith("double")||type.endsWith("Double")){
field.set(t, Double.parseDouble(value));
}else if(type.endsWith("BigDecimal")){
field.set(t, new BigDecimal(value));
}else if(type.endsWith("boolean")||type.endsWith("Boolean")){
field.set(t, value.equals("1")?true:false);
}else if(type.endsWith("long")||type.endsWith("Long")){
field.set(t, Long.parseLong(value));
list.add(t);
t = (T) create(clazz);// 重新创建一个对象
} catch (Exception e) {
logger.error(e);
} finally {
is.close();// 关闭流
} catch (Exception e2) {
logger.error(e2);
* 设置下载请求头和文件名
* @param request request
* @param response response
* @param fileName 文件名称
private static void setResponseHeader(HttpServletRequest request, HttpServletResponse response, String fileName) {
if (request.getHeader("USER-AGENT").toLowerCase().contains("firefox")) {
response.setCharacterEncoding("utf-8");
response.setHeader("content-disposition",
"filename=" + new String(fileName.getBytes(), "ISO8859-1") + ".xls");
response.setCharacterEncoding("utf-8");
response.setHeader("content-disposition",
"filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");
} catch (Exception e) {
e.printStackTrace();
response.setContentType("application/charset=UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
} catch (Exception ex) {
ex.printStackTrace();
* 设置样式
private static XSSFCellStyle[] createStyle(XSSFWorkbook workbook){
XSSFCellStyle[] styles = new XSSFCellStyle[2];
// 设置表格默认列宽度为15个字节
// 生成一个样式
XSSFCellStyle style = workbook.createCellStyle();
// 设置这些样式
style.setBorderBottom(XSSFCellStyle.BORDER_THIN);
style.setBorderLeft(XSSFCellStyle.BORDER_THIN);
style.setBorderRight(XSSFCellStyle.BORDER_THIN);
style.setBorderTop(XSSFCellStyle.BORDER_THIN);
style.setAlignment(XSSFCellStyle.ALIGN_CENTER);
// 生成一个字体
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 12);
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
// 把字体应用到当前的样式
style.setFont(font);
// 生成并设置另一个样式
XSSFCellStyle style2 = workbook.createCellStyle();
style2.setBorderBottom(XSSFCellStyle.BORDER_THIN);
style2.setBorderLeft(XSSFCellStyle.BORDER_THIN);
style2.setBorderRight(XSSFCellStyle.BORDER_THIN);
style2.setBorderTop(XSSFCellStyle.BORDER_THIN);
style2.setAlignment(XSSFCellStyle.ALIGN_CENTER);
// 生成另一个字体
XSSFFont font2 = workbook.createFont();
font2.setBoldweight(XSSFFont.BOLDWEIGHT_NORMAL);
// 把字体应用到当前的样式
style2.setFont(font2);
styles[0]=
styles[1]=style2;
* 创建一个工作簿
* @param is
* @param excelFileName
* @throws IOException
private static Workbook createWorkbook(InputStream is, String excelFileName) throws IOException {
if (excelFileName.endsWith(".xls")) {
return new HSSFWorkbook(is);
} else if (excelFileName.endsWith(".xlsx")) {
return new XSSFWorkbook(is);
* @Description: 根据sheet索引号获取对应的sheet
private static Sheet getSheet(Workbook workbook, int sheetIndex) {
return workbook.getSheetAt(0);
* 将Date型转为Date型
* @param date
* @param format
* @return format ||yyyy-MM-dd HH:mm:ss
public static Date convertDateToDate(Date date) {
String format = "yyyy-MM-dd HH:mm:ss";
if(date != null){
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
* 保留两位小数
* @param v
public static double decimal(double v) {
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one, 2, 1).doubleValue();
//构建对象
public static &T& T create(Class&T& clazz) {
Object t =
t = clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
return (T)
此工具类中可以对生成的excel进行设置
3.前台页面可以设置一个 导出&button&的按钮
发生点击事件后 传参
在contronller层接收
@RequestMapping(value = "/export.do")
public void export(HttpServletRequest req,HttpServletResponse res,UserInfoView view){
Paging paging = new Paging();
paging.setIsPage(false);
List&UserInfoView& list = userInfoService.listUser(view, paging);
String headers[] = new String[]{"会员编号","会员姓名","手机号","身份证","创建时间","银行卡号1","银行卡号2","银行卡号3","职业类型","详细地址","总金额(¥)","未到账(¥)","已到账(¥)","可提现(¥)","已提现(¥)","已划转(¥)"};
String properties[] = new String[]{"userCode","userName","phone","idCard","createTime","bankcardCode1","bankcardCode2","bankcardCode3","address","jobType","totalMoney","notintoWallet","intoWallet","canoutWallet","outWallet","transferWallet"};
ExcelUtils.download(req, res, "会员列表", "sheet", headers,properties, list);
4.如果需求不同的话可以自己创建view类 和 convert方法来对查询到的数据进行处理
,并按照需求将其导出成要求的excel表格
ExcelUtils简单上手
其实ExcelUtils的User's Guide已经相当清楚了,我就权当体验中文记录一下了。
1. 首先在项目classpath加入以下五个jar包:
excelutils.jarpoi-2.5...
读取Excel工具类ExcelUtils
org.apache.poi
一个ExcelUtils
工作需要下载excel文件,使用poi做了一个ExcelUtils的excel生成工具,功能比较基础,但也够用了,代码如下
package com.hxt.common.internal....
ExcelUtils -- excel模板引擎,导出excel最简单的方法
转载自:http://blog.csdn.net/hanqunfeng/article/details/4834875
做过java的人应该都经历过将数据库中的数据导出到excel中的情况,一般...
针对excel的上传表格进行处理,poi文件上传-controller层面... &em&excelutils&/em& 5C币 227下载
&em&excelutils&/em&版本 3C币 17下载
&em&excelutils&/em&工具类 1C币 11下载
&em&excelutils&/em&导...
用于数据库数据导出到Excel表的java工具类,适合多种格式... &em&excelutils&/em&工具类 2C币 11下载
&em&excelutils&/em& 5C币 227下载
&em&excelutils&/em&版本 3C币 17下载
&em&excelutils&/em&导...
&em&excelutils&/em& response 返回... *版权证明: 只允许上传png/jpeg/jpg/gif格式的图片,且小于3M
*详细原因:
交 &em&excelutils&/em& 3积分 立即下载 ...
Jeesite开发,Excel导入导出的功能
使用Jeesite开发的时候,我们都少不了Excel导入导出的功能。这部分需要我我们掌握基本的POI,反射,当然在我们的框架中还定义了注解,也样在代码上整洁许多,下面我们先看一下:
一. 导入导...
Java基于注解和反射导入导出Excel(Bean转Excel,Excel转Bean)
1. 提供了@Excel注解
没有更多推荐了,当前位置: &
一般文员要会的word跟excel表格练习
迅捷CAJ转WORD软件可一键轻松完成CAJ转换成WORD操作,且格式不变.软件功能强大、操
迅捷CAJ转换成Word转换器是一款功能强大的CAJ转Word工具。可以在不改变格式的情
1)专业搜索指定目录下的WORD文件(*.DOC;*.DOCX;)、WPS文件(*.WPS)、Powerpoint文件(*.*.pptx
软件功能简介:1、专业搜索指定目录下面的WORD文件(DOC文件、DOCX文件)、WPS文件和TXT文件
互盾CAJ转Word转换器是一款可以将caj转换成word文档的caj转换器。转换后的word文档
软件简介:迅捷ocr文字识别软件支持图片文字识别、图片文字转换成word、扫描文件
哈喽~小编今天给大家带来了Excel批量生成工作表的方法分享,还不知道怎么操作
Excel汇总大师是一款多功能Excel汇总软件,拥有Excel工作簿、工作表的批量提取、汇总
本软件主要实现的功能是含图书信息的Excel文件转换为图书馆专用CNMarc格式数
1、免费条码设计软件支持绑定excel、Access、sqlserver等数据裤2、采用所见即所得的编辑
小伙伴们你们有没有碰到过一不小心把手机相册里那些承载着许多美好的回忆
今天格子啦小编为大家带来的是如何利用excel制作项目文件目录表教程,日常工
ppt演示文稿一般在进行演示的时候,都会将其设置为分屏显示,那么,如何在ppt中设
[翼南]库管王是一款通用性极强的仓库管理软件,也能够满足一般进销存的需求。软
绿色,免费3用户,无时间限制,自带mysql数据库模块功能齐全满足一般工厂ERP需要,销
星宇免费现金管理软件帮助您轻松便捷地管理您的企业现金往来账,它满足一般
今天格子啦小编为大家带来的是如何解决iPhone每天偷跑流量,一般比较耗费流量
局域网中肆虐的U盘病毒,更新快、变种多,一般安全软件难以做到有效查杀,此类病
【飞耀速录仿真练习软件基本介绍】飞耀速录仿真练习软件为速录学员、爱好者提供
(一)理论教学它主要包含考题练习、模拟考试(科目一、科目四)、知识讲解,而考题练
小编推荐-一般文员要会的word跟excel表格练习1.1K86 条评论分享收藏感谢收起pan.baidu.com/s/1c3qs1Ni 密码: k3vd
喵~————看了上面几张甘特图,基本上只实现了『计划』和『百分比进度』这两个概念,只有在理想化的一切按照计划发展的情况下才有参考价值。但是实际上执行会提前、也可能延期,进度实时都可能变更,我们应该分开考虑计划图和进度图的功能,并在一张自动图标中实现~先上图:(直接下载请拖到答案最后)一、需求分析首先要满足计划图的功能,还是比较简单的,只需要一条简单的规则:通过输入『计划』开始和结束时间,自动在gantt中表现计划时间条(浅蓝色)涉及到进度图,我们需要设置几个定义来区分计划内进度、计划外进度(延期或提前)。在我的图表里面只定义了计划内进度(深蓝色)和计划外进度(蓝色斜杠)。当然你也可以根据实际情况作调整,比如如果实际工作中需要严格区分提前和延期,可以将这两个概念分开定义。于是要满足进度图的功能,我们需要这样几条规则:用深蓝色代表实际执行。其中『计划内执行』用纯深蓝色,『计划外执行』用深蓝色加斜杠而在使用者跟踪进度的时候,使用场景分为两种:1. 只知道开始时间和大概的工作量,并不清楚完成时间
2. 任务已经完成,知道确切的起始和完成时间。根据这两种场景我们可以定义出来这样的使用规则:根据『计划开始』和『计划结束』时间,可以判断出来管理者预估的工作量
预估工作量=计划结束-计划终止
单位:天根据填入的『实际开始』日期,预估工作量,和百分比进度,可以显示计算出来的进度
计算进度=实际开始+预估工作量*百分比进度
单位:天当实际完成时,使用者填入『实际结束』时间,图表中显示实际开始和结束时间,覆盖之前的计算进度在执行过程中和实际完成后,都按照『计划内执行』和『计划外执行』的方式进行可视化显示,让管理者一目了然地掌握实际进度与计划的差距二、功能制作1. 首先按照喜欢的逻辑画一张表头。由于我首先要制作『计划进度』的功能,所以先把计划开始和结束的数据填上了。2. 定义『计划进度』。在【公式-定义名称】中新建定义『Plan』Plan定义返回值是开始和结束时间之间的这一段。这里我用到的公式:=甘特!F$5=MEDIAN(甘特!F$5,甘特!$C6,甘特!$D6)3. 下面用【开始-条件格式-管理规则】的功能,将返回的真值填色:新建一条自定义规则:【应用区域】选择在整体日期表区域:这一步做完后,我们会得到一张【计划甘特图】:4. 下面同理,继续用【定义名称】和【管理规则】功能把上面列出的需求点一条条定义,并在图表中实现。除了上面的『Plan』以外我还定义了这么几个名称:【已填写『实际开始』和『实际进度』】Actual:计划内进度条=甘特!C$5=MEDIAN(甘特!C$5, 甘特!$E6, 甘特!$F6)*(甘特!$E6&&0)*(甘特!$F6&&0)Advance:『实际开始』早于『计划开始』,提前段进度条=甘特!C$5=(甘特!$E6&甘特!$C6)*MEDIAN(甘特!C$5, 甘特!$E6, (甘特!$C6-1))*(甘特!$E6&&0)*(甘特!$F6&&0)Delay:『实际结束』晚于『计划结束』,延期段进度条=甘特!C$5=(甘特!$F6&甘特!$D6)*(MEDIAN(甘特!C$5, (甘特!$D6+1), 甘特!$F6))【已填写『实际开始』和『百分比进度』,未填写『实际进度』】Percent:计算进度PercentEarlier:『实际开始』早于『计划开始』,包括一小段提前进度PercentLater:『实际开始』大于等于『计划开始』,全部为计划内进度将以上定义都在条件格式进行编辑:应用区域均为整个日期表部分。三、美化调整这样做出来的表格还有一点点geek和不方便哎,一大堆格子混在一起很难看清行列。对此我做了这么几个优化:隔列灰度显示,便于每日任务的可视化可以手动设置一个『今日日期』突出显示该列日期最好可以有微调框前面两条灰度和突出显示列,用简单的条件格式就可以实现了,公式如下:突出显示列:=H$5=$F$2(其中H$5是日期列,$F$2是手动输入的日期值)隔列灰度显示:=MOD(COLUMN(), 2)=0最后加一个可爱的微调框,在【开发工具-微调框】添加:控件格式链接到手动输入日期的单元格:一个自动甘特图就做好了。完工~Excel很好玩,但是做起来也蛮麻烦的。上传了一份到网盘,链接:
密码: iwvq谢谢~——————————————————————————————————UPDATE:关于如何实现跨月,可以用『冻结窗格』功能实现。把全年时间在横栏实现,然后冻结时间区域的第一行第一列的格子,就可以左右上下拖动地看了~赞同 47296 条评论分享收藏感谢收起}

我要回帖

更多关于 execl表格怎么做 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信