办公

当前位置:永利皇宫463登录 > 办公 > 模板导出excel,基于模板excel导出

模板导出excel,基于模板excel导出

来源:http://www.makebuLuo.com 作者:永利皇宫463登录 时间:2019-11-15 00:29

制作滚动条,链接到单元格:由于只有12个月收支明细,所以滚动条数值最小为1,最大为12

在模板中添加数据

public static void ExcelByModel(String ExcelName, String ModelURl, List<Map<String,String>> dataSource,HttpServletResponse response, String[] sheetNames, String[] keyNames, int rowNum) throws Exception {

// 设置导出Excel报表的导出形式

response.setContentType("application/vnd.ms-excel");

// 设置导出Excel报表的响应文件名

String fileName = new String(ExcelName.getBytes("utf-8"), "ISO-8859-1");

response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");//导出的文件名称

// 创建一个输出流

OutputStream fileOut = response.getOutputStream();

// 读取模板文件路径

File file = new File(ModelURl);

FileInputStream fins = new FileInputStream(file);

POIFSFileSystem fs = new POIFSFileSystem(fins);

// 读取Excel模板

HSSFWorkbook wb = new HSSFWorkbook(fs);

HSSFSheet sheet = wb.getSheetAt(0);//获取第一页sheet页

sheet.autoSizeColumn(1);

HSSFRow rowCellStyle1 = sheet.getRow(2);//sheet页的第二行

HSSFCellStyle columnOne01 = rowCellStyle1.getCell(0).getCellStyle();//获取sheet页第二行的样式

// 设置边框样式(样式自己选择)

//        HSSFCellStyle style = wb.createCellStyle();

//        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

//        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

//        style.setBorderRight(HSSFCellStyle.BORDER_THIN);

//        style.setBorderTop (HSSFCellStyle.BORDER_THIN);

// 设置边框样式的颜色

//        style.setBottomBorderColor(HSSFColor.BLACK.index);

//        style.setLeftBorderColor(HSSFColor.BLACK.index);

//        style.setRightBorderColor(HSSFColor.BLACK.index);

//        style.setTopBorderColor(HSSFColor.BLACK.index);

for (int j = 0; j <20; j++) {

HSSFRow row = sheet.getRow(j+3);// 创建第二行

HSSFCell cellHeard1 = row.getCell(1);    //获取模板的第2个单元格b

HSSFCell cellHeard2 = row.getCell(2);

HSSFCell cellHeard3 = row.getCell(3);

HSSFCell cellHeard4 = row.getCell(4);

HSSFCell cellHeard5 = row.getCell(5);

HSSFCell cellHeard6 = row.getCell(6);

HSSFCell cellHeard7 = row.getCell(7);

// 在该单元格内输入内容

cellHeard1.setCellValue(j+1); //序号

cellHeard1.setCellStyle(columnOne01);//获取模板单元格样式

//单元格添加数据

cellHeard2.setCellValue("1");

cellHeard2.setCellStyle(columnOne01);

//单元格添加数据

cellHeard3.setCellValue("2");

cellHeard3.setCellStyle(columnOne01);

//单元格添加数据

cellHeard4.setCellValue(3);

cellHeard4.setCellStyle(columnOne01);

//单元格添加数据

cellHeard5.setCellValue(4);

cellHeard5.setCellStyle(columnOne01);

//单元格添加数据

cellHeard6.setCellValue(5);

cellHeard6.setCellStyle(columnOne01);

//单元格添加数据

cellHeard7.setCellValue(6);

cellHeard7.setCellStyle(columnOne01);

}

// 写入流

wb.write(fileOut);

// 关闭流

fileOut.close();

}

    本示例中使用了StringTemplate模板技术,进行excel数据导出的操作。

先来分析一下数据源:这是一个家庭一年的支出收入明细,可以用一个柱状图来展示每个月的支出明细,用概况表现家庭当月的现金流,非常清晰的看出家庭每月的现金流,用好这个表格,更好帮你理财!

//这个用模板导出,省略了创建表头的方法,可以把模板里面的全部复制下来,放到要导出的excel里面

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Created>1996-12-17T01:32:42Z</Created>
  <LastSaved>2013-08-02T09:21:24Z</LastSaved>
  <Version>11.9999</Version>
 </DocumentProperties>
 <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
  <RemovePersonalInformation/>
 </OfficeDocumentSettings>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>4530</WindowHeight>
  <WindowWidth>8505</WindowWidth>
  <WindowTopX>480</WindowTopX>
  <WindowTopY>120</WindowTopY>
  <AcceptLabelsInFormulas/>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="宋体" x:CharSet="134" ss:Size="12"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
 </Styles>

回答:

//首先要记住,excel 第一行是从0开始的,列也是如此

4.表头模板(head)

回答:

//访问方法

public String na(HttpServletResponse response,HttpServletRequest request){

    //查询要到处的数据

List<Map<string,string>> dataSourceList= null;

try {

        ExcelDownloadUtil.ExcelByModel("测试模板导出", modelURLString, dataSourceList, response, sheetNameStrings, keysStrings, 6);

} catch (Exception e) {

        e.printStackTrace();

}

    return "SUCESS";

}


  2.示例代码如下:

关注 EXCEL精选技巧,私信发送即可获取!

     1.首先导入所需要的jar包,本示例中通过maven引入

这个是输入数据的页面,把数据输入到excel表格里就自动生成你想要的表了。或者也可以直接上传你的数据的excel,不用手动输入,更省事了。

 $worksheet:{
 <Worksheet ss:Name="$it.sheet$">
  <Table ss:ExpandedColumnCount="$it.columnNum$" ss:ExpandedRowCount="$it.rowNum$" x:FullColumns="1"
   x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
 $it.rows:{
   <Row>
    <Cell><Data ss:Type="String">$it.name1$</Data></Cell>
    <Cell><Data ss:Type="String">$it.name2$</Data></Cell>
    <Cell><Data ss:Type="String">$it.name3$</Data></Cell>
   </Row>
 }$
  </Table>
 </Worksheet>
}$

规范好用的Excel模板不就在Excel中吗?

完全免费,支持搜索,点击下载,一键保存!!!

Excel中进行如下操作:—等一会,即可出现如下界面:

图片 1

有没有注意到,除了空白工作簿,其他都是规范的excel模板,而且分门别类,数量不少,可联网查询,支持一键下载。

搜索一下题主说的项目进度行模板,看一下:

图片 2

嗯,分类里显示项目类别的有48个,足够选择使用了。

我选择其中一个下载:单击第一行第三个(看着比较顺眼~),然后点击创建。

图片 3

图片 4

直接新建一个excel表格,就是这样滴:

图片 5

这个表格中的公式图表都是设置好了的,修改数据会自动更新,很多地方比如图示还有文字解说。

图片 6

图片 7

黄色单元格的数字我随便修改为10,右边图表中对应的图形也变化到10。

这个模板的项目进度条是通过条件格式设置的,如上图中的窗口显示,也可以从这里修改(其实我感觉原版颜色、图形搭配挺合理的,完全不用修改)

你只要保存一下就是自己的了。

真是良心产品。

是不是Excel隐藏的太好,大家都没有发现?

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Created>1996-12-17T01:32:42Z</Created>
  <LastSaved>2013-08-02T09:21:24Z</LastSaved>
  <Version>11.9999</Version>
 </DocumentProperties>
 <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
  <RemovePersonalInformation/>
 </OfficeDocumentSettings>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>4530</WindowHeight>
  <WindowWidth>8505</WindowWidth>
  <WindowTopX>480</WindowTopX>
  <WindowTopY>120</WindowTopY>
  <AcceptLabelsInFormulas/>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="宋体" x:CharSet="134" ss:Size="12"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
 </Styles>

里面的图表都很漂亮,还有PPT界的传奇人物阿文老师也在这里制作模板。

package yang.zheng.util.excel;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.antlr.stringtemplate.StringTemplate;
import org.antlr.stringtemplate.StringTemplateGroup;



class Student{
    private String name;

    private int age;

    private List<String> hobbys = new ArrayList<String>();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<String> getHobbys() {
        return hobbys;
    }

    public void setHobbys(List<String> hobbys) {
        this.hobbys = hobbys;
    }
}

class Row{
    private String name1;

    private String name2;

    private String name3;

    public String getName1() {
        return name1;
    }

    public void setName1(String name1) {
        this.name1 = name1;
    }

    public String getName2() {
        return name2;
    }

    public void setName2(String name2) {
        this.name2 = name2;
    }

    public String getName3() {
        return name3;
    }

    public void setName3(String name3) {
        this.name3 = name3;
    }


}

class Worksheet{
    private String sheet;

    private int columnNum;

    private int rowNum;

    private List<Row> rows;

    public String getSheet() {
        return sheet;
    }

    public void setSheet(String sheet) {
        this.sheet = sheet;
    }

    public List<Row> getRows() {
        return rows;
    }

    public void setRows(List<Row> rows) {
        this.rows = rows;
    }

    public int getColumnNum() {
        return columnNum;
    }

    public void setColumnNum(int columnNum) {
        this.columnNum = columnNum;
    }

    public int getRowNum() {
        return rowNum;
    }

    public void setRowNum(int rowNum) {
        this.rowNum = rowNum;
    }

}

public class ExcelTemplate{

    public static void main(String[] args) throws FileNotFoundException{
        ExcelTemplate template = new ExcelTemplate();
        template.output2();
    }

    /**
     * @param args
     * @throws FileNotFoundException 
     */
    public void template() throws FileNotFoundException {
        StringTemplate st = new StringTemplate("hello,$name$");
        st.setAttribute("name", "china");
        System.out.println(st.toString());

        StringTemplate st2 = new StringTemplate("select $columns:{<i>$it$</i>n}$ from users"); 
        List<String> columns = new ArrayList<String>();
        columns.add("a");
        columns.add("b");
        columns.add("c");
        columns.add("d");
        columns.add("e");
        st2.setAttribute("columns",columns);
        System.out.println(st2.toString());

        StringTemplate st3 = new StringTemplate("$students:{" +
                "$it.name$," +
                "$it.age$," +
                "$it.hobbys:{$it$,}$" +
            "}$"); 
        List<Student> students = new ArrayList<Student>();
        Student student = new Student();
        student.setName("hunter");
        student.setAge(24);
        List<String> hobbyList = new ArrayList<String>();
        hobbyList.add("sports");
        hobbyList.add("grils");
        hobbyList.add("money");
        student.setHobbys(hobbyList);
        students.add(student);

        student = new Student();
        student.setName("xiaoming");
        student.setAge(25);
        hobbyList = new ArrayList<String>();
        hobbyList.add("movie");
        hobbyList.add("coding");
        student.setHobbys(hobbyList);
        students.add(student);

        st3.setAttribute("students", students);

        System.out.println(st3.toString());

    }

    /**
     * 生成数据量大的时候,该方法会出现内存溢出
     * @throws FileNotFoundException
     */
    public void output1() throws FileNotFoundException{
        StringTemplateGroup stGroup = new StringTemplateGroup("stringTemplate");         
        StringTemplate st4 =  stGroup.getInstanceOf("excelTemplate/test");
        List<Worksheet> worksheets = new ArrayList<Worksheet>();

        File file = new File("D:/output.xls");
        PrintWriter writer = new PrintWriter(new BufferedOutputStream(new FileOutputStream(file)));

        for(int i=0;i<30;i++){
            Worksheet worksheet = new Worksheet();
            worksheet.setSheet("第"+(i+1)+"页");
            List<Row> rows = new ArrayList<Row>();
            for(int j=0;j<6000;j++){
                Row row = new Row();
                row.setName1("zhangzehao");
                row.setName2(""+j);
                row.setName3(i+" "+j);
                rows.add(row);
            }
            worksheet.setRows(rows);
            worksheets.add(worksheet);
        }

        st4.setAttribute("worksheets", worksheets);
        writer.write(st4.toString());
        writer.flush();
        writer.close();
        System.out.println("生成excel完成");
    }

    /**
     * 该方法不管生成多大的数据量,都不会出现内存溢出,只是时间的长短
     * 
     * 经测试,生成1800万数据,6~10分钟之间,3G大的文件,打开大文件就看内存是否足够大了
     * 
     * 数据量小的时候,推荐用jxls的模板技术生成excel文件,谁用谁知道,大数据量可以结合该方法使用
     * 
     * @throws FileNotFoundException
     */
    public void output2() throws FileNotFoundException{
        long startTimne = System.currentTimeMillis();

        StringTemplateGroup stGroup = new StringTemplateGroup("stringTemplate");   

        //写入excel文件头部信息
        StringTemplate head =  stGroup.getInstanceOf("excelTemplate/head");
        File file = new File("D:/output.xls");
        PrintWriter writer = new PrintWriter(new BufferedOutputStream(new FileOutputStream(file)));
        writer.print(head.toString());
        writer.flush();

        int sheets = 300;
        //excel单表最大行数是65535
        int maxRowNum = 60000;

        //写入excel文件数据信息
        for(int i=0;i<sheets;i++){
            StringTemplate body =  stGroup.getInstanceOf("excelTemplate/body");
            Worksheet worksheet = new Worksheet();
            worksheet.setSheet(" "+(i+1)+" ");
            worksheet.setColumnNum(3);
            worksheet.setRowNum(maxRowNum);
            List<Row> rows = new ArrayList<Row>();
            for(int j=0;j<maxRowNum;j++){
                Row row = new Row();
                row.setName1(""+new Random().nextInt(100000));
                row.setName2(""+j);
                row.setName3(i+""+j);
                rows.add(row);
            }
            worksheet.setRows(rows);
            body.setAttribute("worksheet", worksheet);
            writer.print(body.toString());
            writer.flush();
            rows.clear();
            rows = null;
            worksheet = null;
            body = null;
            Runtime.getRuntime().gc();
            System.out.println("正在生成excel文件的 sheet"+(i+1));
        }

        //写入excel文件尾部
        writer.print("</Workbook>");
        writer.flush();
        writer.close();
        System.out.println("生成excel文件完成");
        long endTime = System.currentTimeMillis();
        System.out.println("用时="+((endTime-startTimne)/1000)+"秒");
    }

}

动态柱状图的制作过程:

     

图片 8

 3.内容模板(body)

图片 9

4.test模板

回答:

<dependency>
            <groupId>org.antlr</groupId>
            <artifactId>stringtemplate</artifactId>
            <version>3.2</version>
        </dependency>

制作动态数据区域:利用OFFSET函数动态获取数据区域,公式=OFFSET($A$7:$M$10,,$O$5,,1),然后定义成名称

问题:有哪里可以下载到已经成型的excel工作模板。例如: 已经设定好公式和图表的项目进度监控表或数据分析表。不一定要十分完美。谢谢!

另有211套精美图表模板,私信回复免费领取!

图片 10

今天技巧君给大家分享一个 综合案例,利用EXCEL制作家庭预算表,先来看效果!

我介绍的只是图表类的,不知道适不适合你用,自己去看一下吧。拿走不谢。

图片 11

如果你是某个行业,数据需要用很多种图表,「图表秀」还有图表模板商城,里面有很多按照行业分类的模板(红框内),目前大部分是免费,少部分收费,足够你用了。

图片 12

图片 13这个是「图表秀」制作图表的操作页面,红框内就有一百多种图表,想用哪个可以任意选择,点击右下角的图表编辑,就可以进入这个图表,输入自己的数据了。

图片 14

图片 15

回答楼主的问题,我在用的office互联网工具中,有各类图表的模板。就是图表都是现成做好的,你想用哪个图表,直接选择这个图表并输入数据,就自动生成你想要的图表了。这个工具叫「图表秀」,是一款在线制作图表的工具,可免费使用。上图说明一下:

制作动态条形图:插入条形图,数据区域选择:=常规家庭预算.xlsx!演示数据,然后根据需要美化一下即可

图片 16

图片 17

我看了下面亲们的回答。感觉楼主这么问没有问题。现在是一个跟时间赛跑的时代,工作追求质量的同时,一定要追求效率,才能工作更出色,生活又不耽误。见谅我的碎嘴。

图片 18

本文由永利皇宫463登录发布于办公,转载请注明出处:模板导出excel,基于模板excel导出

关键词:

上一篇:模板导出excel,基于模板excel导出

下一篇:没有了