精华内容
下载资源
问答
  • 完整、齐全的excel表格的教程,简单明了。
  • 用C++制作excel表格

    2012-04-01 08:13:02
    用C++制作excel表格 主要实现传统表格的绘制,并利用滚动条拖动不能屏幕中显示的全部表格
  • C#简易Excel表格制作

    2013-11-28 10:24:32
    简易制作Excel,直接生成文件,无需加载类库。
  • python操作excel表格有不少组件,如:xlwt、openpyxl、pandas、xlrd、xlwings,一些组件使用时有问题;这里选用xlwings,从原Excel报表统计后再生成的新Excel表格

    0、前言

             因产品的同学试着用python统计Excel表格,但百度的程序又一直有各种问题, 所以叫我帮用python实现一个统计Excel表格程序;我之前也没有写过python操作Excel表格的程序,快速搜索实现了一下,还是发现一些问题,所以分享一下。

    1、需求       

            我们使用TAPD管理项目,这里从TAPD导出的原Excel报表,统计后再生成的新Excel表。
            原Excel报表是任务(标题)的信息列表,需要按需求分类分别统计各处理人的预估工时,如下(图1原始Excel表格有200多行、图2统计生成的新Excel表格):

    原始Excel表格
    统计生成的新Excel表格

    2、python操作excel表格说明

            python操作excel表格有不少组件,如:xlwt、openpyxl、pandas、xlrd、xlwings
            
            一些组件在使用时有问题,如下:
                    https://blog.csdn.net/weixin_42555985/article/details/102872781
                    https://www.jianshu.com/p/8640abf11297
            
            这里选用xlwings,xlwings使用接近VBA的语法从Python自动与Excel交互,注意是使用到Excel软件;
            官方文档及一些参考如下:
                    https://docs.xlwings.org/en/stable/index.html
                    https://blog.csdn.net/whalefall/article/details/102665002
                    http://www.dszhp.com/xlwings-range.html
                    https://www.cnblogs.com/cyanrose/p/12059040.html
                    https://blog.csdn.net/lh_hebine/article/details/104559382
            
            当然xlwing使用中也发现一个问题,range().expand()选择表格范围时无法识别一行/一列中的空值,遇到空值默认读取终止:
                    https://blog.csdn.net/weixin_44781801/article/details/88692982
            下面程序会跳过一行/一列的范围选择问题。

    3、python xlwings操作excel表格程序

            目录下有111.py脚本、原始excel表格222.xls和生成的excel表格333.xls;

            直接运行程序: $ python 111.py
            即可实现222.xls --统计、生成--> 333.xls,效果如前面的excel表格图片;
            下面是python 111.py脚本程序,可在python2.7运行:

    # -*- coding: utf-8 -*-
    import xlwings as xw
    import sys
    
    
    class Story(object):
    
        def __init__(self, handler, workingHours, demandClassification):
            self.handler = handler
            self.workingHours = workingHours
            self.demandClassification = demandClassification
    
        def get_handler(self):
            return self.handler
    
        def get_workingHours(self):
            return self.workingHours
    
        def get_demandClassification(self):
            return self.demandClassification
    
        def __str__(self):
            return "处理人:" + self.handler + ", 预估工时:" + str(self.workingHours) + ", 需求分类:" + self.demandClassification
    
    
    filePath = r'222.xls'
    newFilePath = r'333.xls'
    
    
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    app = None
    wb = None
    wbNew = None
    appNew = None
    try:
        app = xw.App(visible=False, add_book=False)
        app.display_alerts = False
        app.screen_updating = False
        wb = app.books.open(filePath)
    
        sht = wb.sheets.active
        # shtName=sht.name
        # print(shtName)
    
        rowCount = sht.range('A1').expand('table').rows.count
        # print(rowCount)
        data = sht.range('A3:G' + str(rowCount)).value
        # print(data)
        storyList = list()
        for i in range(len(data)):
            # print(data[i])
            # for j in range(len(data[i])):
                # print(data[i][j])
            handler = data[i][1]
            workingHours = data[i][4]
            demandClassification = data[i][5]
            if handler is None:
                handler = "未安排处理人"
            if workingHours is None:
                workingHours = 0
            if demandClassification is None:
                demandClassification = "未知需求分类"
    
            story = Story(str(handler), int(str(workingHours)),
                          str(demandClassification))
            storyList.append(story)
            # print(str(story))
    
        if len(storyList) > 0:
            handlerSet = set()
            demandClassificationSet = set()
            workingHoursMap = dict()
            for story in storyList:
                handlerSet.add(story.get_handler())
                demandClassificationSet.add(story.get_demandClassification())
                key = str(story.get_handler() + story.get_demandClassification())
                if workingHoursMap.get(key) is None:
                    workingHoursMap[key] = 0
                workingHoursMap[key] = workingHoursMap.get(
                    key) + story.get_workingHours()
    
            handlerList = list(handlerSet)
            demandClassificationList = list(demandClassificationSet)
            workingHoursList = []
            handlerGbkList = []
            demandClassificationGbkList = []
            change = False
            for j in range(len(demandClassificationList)):
                workingHoursList.append([])
                for k in range(len(handlerList)):
                    key = str(handlerList[k] + demandClassificationList[j])
                    workingHoursList[j].append(workingHoursMap.get(key))
                    if change is False:
                        handlerGbkList.append(handlerList[k].encode("gbk"))
                change = True
                demandClassificationGbkList.append(
                    demandClassificationList[j].encode("gbk"))
    
            try:
                appNew = xw.App(visible=False, add_book=False)
                appNew.display_alerts = False
                appNew.screen_updating = False
                wbNew = appNew.books.add()
                shtNew = wbNew.sheets['sheet1']
    
                shtNew.range('A2').options(
                    transpose=True).value = demandClassificationGbkList
                shtNew.range('B1').value = handlerGbkList
                shtNew.range('B2').value = workingHoursList
    
                wbNew.save(newFilePath)
    
            finally:
                if wbNew is not None:
                    wbNew.close()
                if appNew is not None:
                    appNew.quit()
    finally:
        if wb is not None:
            wb.close()
        if app is not None:
            app.quit()
    

     

    展开全文
  • VC使用BasicExcel读取Excel电子表格

    热门讨论 2012-11-13 14:15:21
    使用BasicExcel进行Excel电子表格的读取,可以参考这个工程使用。 使用VS2010版本。 使用VC时建议只附加BasicExcelVC6.hpp和BasicExcelVC6.cpp文件(或者BasicExcel.hpp和BasicExcel.cpp)不要四个同时附加。
  • 我们使用excel表格时,有时候会需要一个单元格内进行换行。如果我们直接敲击回车,那么会直接切换至另一个单元格。接下来,小编来和大家分享下如何一个单元格内换行。 方法 / 步骤 打开电脑中的excel表格...

    Excel表格是我们经常使用的一个办公软件。我们在使用excel表格时,有时候会需要在一个单元格内进行换行。如果我们直接敲击回车,那么会直接切换至另一个单元格。接下来,小编来和大家分享下如何在一个单元格内换行。

     

    方法 / 步骤

    打开电脑中的excel表格,新建一个空白工作簿。

    在新建工作簿中任选一个单元格,并在单元格中输入“哈哈!我很帅”。

    如果我们想让第一行显示“哈哈!”,第二行显示“我很帅”。那么我们将鼠标放置到两者中间。

    接着,我们点击键盘上的组合键【Alt】+【Enter】。这时,我们便可以发现“哈哈!我很帅”已经显示在两行中。

    我们还可以通过编辑栏查看我的换行后的结果。点击编辑了后方向下箭头图标。

    接着,编辑栏会被展开。我们同样可以看到“哈哈!我很帅”显示在两行中。

    展开全文
  • EXCEL表格解密软件

    2010-05-06 22:54:13
    EXCEL表格解密软件EXCEL表格解密软件EXCEL表格解密软件EXCEL表格解密软件EXCEL表格解密软件
  • Cadence OrCAD制作复杂的元器件时,我们会...今天教大家 如何利用Excel表格制作复杂元器件?从而快速便捷的创建复杂元器件,达到事半功倍的效果! 下面以100个引脚,LQFP封装的32位处理器STM32F105系列芯片,来...
    	Cadence OrCAD制作复杂的元器件时,我们会发现元器件引脚非常多,而且比较复杂(如集成IC,SATA接口等)。如果还是像创建简单元器件一样的方法去制作,不仅费时费力,而且还容易出错,加大了工作难度和降低效率。今天教大家 如何利用Excel表格制作复杂元器件?从而快速便捷的创建复杂元器件,达到事半功倍的效果!
    	
    下面以100个引脚,LQFP封装的32位处理器STM32F105系列芯片,来演示利用Excel表格制作元器件的方法。
    	问题描述:Cadence OrCAD 如何利用Excel表格制作复杂元器件?
    	方法步骤:
    

    1、打开OrCAD Capture软件,新建一个元件库或者添加现有一个元件库,之后选中添加的库,右击选择New Part,如下图所示:

    在这里插入图片描述
    填写元件相关信息,如下图所示:

    在这里插入图片描述
    2.使用PinArray工具添加100个引脚,如下图所示:

    在这里插入图片描述在这里插入图片描述
    3、添加好100个引脚后的效果,如下图所示:

    在这里插入图片描述

    4.鼠标左键框选所有的Pin(注意不要选中框),右键选择Edit Properties编辑管脚属性,如下图所示:

    在这里插入图片描述
    5、在Edit Properties编辑对话框下,点击空白位置进入全选状态,如下图所示:

    在这里插入图片描述
    在这里插入图片描述
    全选整个表格后,快捷键Ctrl+Ins,复制整个表格,然后打开Excel表格按快捷键Ctrl+V粘贴上述表格,然后编辑该表格。

    **技巧提示:**先使用PDF编辑器将PDF格式的数据手册转成Word文档格式,然后再在Excel表格中进行修改和完善。
    6、本例的器件为100个引脚,即Excel文件应该为100行,编辑完的Excel文件如下图所示:

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    对Excel表格进行全选,按Ctrl+C进行复制,回到OrCAD中的Edit Properties编辑对话框,按Shift+Ins粘贴到Edit Properties编辑对话框中,然后确定即可。

    在这里插入图片描述
    7.放置管脚后,在OrCAD中,调整Pin的位置即可(根据自己的风格调整Pin的位置),如下图所示:

    在这里插入图片描述

    展开全文
  • 具体思路是:后端返回给我json数据,前端根据数据和具体的几项字段去导出excel表格,还有导出多个sheet,多页表格到一个excel表里面,具体思路 根据Export2Excel插件,并修改插件Export2Excel完成导出多页(多个sheet...

    目录

    (一)直接调用

     

    (二)、封装导出函数调用


    最近做项目中有一个导出excel表格的需求

    具体思路是:后端返回给我json数据,前端根据数据和具体的几项字段去导出excel表格,还有导出多个sheet,多页表格到一个excel表里面,具体思路 根据Export2Excel插件,并修改插件Export2Excel完成导出多页(多个sheet)的excel

    第一步:安装插件 依赖

    npm install file-saver --save
    npm install xlsx --save
    npm install script-loader --save-dev

    第二步、下载两个所需要的js文件Blob.js和 Export2Excel.js。

    下载地址 微信扫描二维码下载

    第三步、src目录下新建vendor文件夹,将Blob.js和 Export2Excel.js放进去

     

    (一)直接调用

    第一步,在.vue中调用

    //引入字段过滤器时间过滤
    import { parseTime } from "@/utils/setMethods"
    
    
    
    handleDownload () {
          var excelDatas = [
            {
              tHeader: ["Id", "Title", "Author", "Readings", "Date"], // sheet表一头部
              filterVal: ["id", "title", "author", "pageviews", "display_time"], // 表一的数据字段
              tableDatas: this.list, // 表一的整体json数据
              sheetName: "sheet1"// 表一的sheet名字
            },
            {
              tHeader: ["序号", "标题", "作者", "服务"],
              filterVal: ["id", "title", "author", "reviewer"],
              tableDatas: this.list,
              sheetName: "sheet2"
            },
            {
              tHeader: ["序号", "名字", "描述"],
              filterVal: ["userId", "userName", "userDescription"],
              tableDatas: this.rolesList,
              sheetName: "sheet5555"
            }
          ]
    
          this.json2excel(excelDatas, "数据报表", true, "xlsx")
        },
        // tableJson 导出数据 ; filenames导出表的名字; autowidth表格宽度自动 true or false; bookTypes xlsx & csv & txt
        json2excel (tableJson, filenames, autowidth, bookTypes) {
          var that = this
    //这个是引用插件
          import("@/vendor/Export2Excel").then(excel => {
            var tHeader = []
            var dataArr = []
            var sheetnames = []
            for (var i in tableJson) {
              tHeader.push(tableJson[i].tHeader)
              dataArr.push(that.formatJson(tableJson[i].filterVal, tableJson[i].tableDatas))
              sheetnames.push(tableJson[i].sheetName)
            }
            excel.export_json_to_excel({
              header: tHeader,
              data: dataArr,
              sheetname: sheetnames,
              filename: filenames,
              autoWidth: autowidth,
              bookType: bookTypes
            })
          })
        },
        // 数据过滤,时间过滤
        formatJson (filterVal, jsonData) {
          return jsonData.map(v => filterVal.map(j => {
            if (j === "timestamp") {
              return parseTime(v[j])
            } else {
              return v[j]
            }
          }))
        }

    第二步:修改插件Export2Excel导出多个sheet表格,导出多页

    修改过的  Export2Excel.js 主要修改 export_json_to_excel 函数

    //Export2Excel.js 
    
    /* eslint-disable */
    require("script-loader!file-saver")
    import XLSX from "xlsx"
    
    function generateArray(table) {
      var out = []
      var rows = table.querySelectorAll("tr")
      var ranges = []
      for (var R = 0; R < rows.length; ++R) {
        var outRow = []
        var row = rows[R]
        var columns = row.querySelectorAll("td")
        for (var C = 0; C < columns.length; ++C) {
          var cell = columns[C]
          var colspan = cell.getAttribute("colspan")
          var rowspan = cell.getAttribute("rowspan")
          var cellValue = cell.innerText
          if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue
    
          //Skip ranges
          ranges.forEach(function(range) {
            if (
              R >= range.s.r &&
              R <= range.e.r &&
              outRow.length >= range.s.c &&
              outRow.length <= range.e.c
            ) {
              for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null)
            }
          })
    
          //Handle Row Span
          if (rowspan || colspan) {
            rowspan = rowspan || 1
            colspan = colspan || 1
            ranges.push({
              s: {
                r: R,
                c: outRow.length
              },
              e: {
                r: R + rowspan - 1,
                c: outRow.length + colspan - 1
              }
            })
          }
    
          //Handle Value
          outRow.push(cellValue !== "" ? cellValue : null)
    
          //Handle Colspan
          if (colspan) for (var k = 0; k < colspan - 1; ++k) outRow.push(null)
        }
        out.push(outRow)
      }
      return [out, ranges]
    }
    
    function datenum(v, date1904) {
      if (date1904) v += 1462
      var epoch = Date.parse(v)
      return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000)
    }
    
    function sheet_from_array_of_arrays(data, opts) {
      var ws = {}
      var range = {
        s: {
          c: 10000000,
          r: 10000000
        },
        e: {
          c: 0,
          r: 0
        }
      }
      for (var R = 0; R != data.length; ++R) {
        for (var C = 0; C != data[R].length; ++C) {
          if (range.s.r > R) range.s.r = R
          if (range.s.c > C) range.s.c = C
          if (range.e.r < R) range.e.r = R
          if (range.e.c < C) range.e.c = C
          var cell = {
            v: data[R][C]
          }
          if (cell.v == null) continue
          var cell_ref = XLSX.utils.encode_cell({
            c: C,
            r: R
          })
    
          if (typeof cell.v === "number") cell.t = "n"
          else if (typeof cell.v === "boolean") cell.t = "b"
          else if (cell.v instanceof Date) {
            cell.t = "n"
            cell.z = XLSX.SSF._table[14]
            cell.v = datenum(cell.v)
          } else cell.t = "s"
    
          ws[cell_ref] = cell
        }
      }
      if (range.s.c < 10000000) ws["!ref"] = XLSX.utils.encode_range(range)
      return ws
    }
    
    function Workbook() {
      if (!(this instanceof Workbook)) return new Workbook()
      this.SheetNames = []
      this.Sheets = {}
    }
    
    function s2ab(s) {
      var buf = new ArrayBuffer(s.length)
      var view = new Uint8Array(buf)
      for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
      return buf
    }
    
    export function export_table_to_excel(id) {
      var theTable = document.getElementById(id)
      var oo = generateArray(theTable)
      var ranges = oo[1]
    
      /* original data */
      var data = oo[0]
      var ws_name = "SheetJS"
    
      var wb = new Workbook(),
        ws = sheet_from_array_of_arrays(data)
    
      /* add ranges to worksheet */
      // ws['!cols'] = ['apple', 'banan'];
      ws["!merges"] = ranges
    
      /* add worksheet to workbook */
      wb.SheetNames.push(ws_name)
      wb.Sheets[ws_name] = ws
    
      var wbout = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: false,
        type: "binary"
      })
    
      saveAs(
        new Blob([s2ab(wbout)], {
          type: "application/octet-stream"
        }),
        "test.xlsx"
      )
    }
    
    
    
    //主要修改此函数内的方法
    
    export function export_json_to_excel({
      multiHeader = [],
      header,
      data,
      sheetname,
      filename,
      merges = [],
      autoWidth = true,
      bookType = "xlsx"
    } = {}) {
      /* original data */
      filename = filename || "excel-list"
      data = [...data]
    
      for (var i = 0; i < header.length; i++) {
        data[i].unshift(header[i])
      }
    
      // data.unshift(header)
    
      for (let i = multiHeader.length - 1; i > -1; i--) {
        data.unshift(multiHeader[i])
      }
    
      var ws_name = sheetname
      var wb = new Workbook(),
        ws = []
      for (var j = 0; j < header.length; j++) {
        ws.push(sheet_from_array_of_arrays(data[j]))
      }
    
      if (merges.length > 0) {
        if (!ws["!merges"]) ws["!merges"] = []
        merges.forEach(item => {
          ws["!merges"].push(XLSX.utils.decode_range(item))
        })
      }
      // console.log("width", autoWidth)
      if (autoWidth) {
        /*设置worksheet每列的最大宽度*/
        var colWidth = []
        for (var k = 0; k < header.length; k++) {
          colWidth.push(
            data[k].map(row =>
              row.map(val => {
                /*先判断是否为null/undefined*/
                if (val == null) {
                  return {
                    wch: 10
                  }
                } else if (val.toString().charCodeAt(0) > 255) {
                  /*再判断是否为中文*/
                  return {
                    wch: val.toString().length * 2
                  }
                } else {
                  return {
                    wch: val.toString().length
                  }
                }
              })
            )
          )
        }
    
        /*以第一行为初始值*/
        let result = []
        for (var k = 0; k < colWidth.length; k++) {
          result[k] = colWidth[k][0]
          for (let i = 1; i < colWidth[k].length; i++) {
            for (let j = 0; j < colWidth[k][i].length; j++) {
              if (result[k][j]["wch"] < colWidth[k][i][j]["wch"]) {
                result[k][j]["wch"] = colWidth[k][i][j]["wch"]
              }
            }
          }
        }
        // 分别给sheet表设置宽度
        for (var l = 0; l < result.length; l++) {
          ws[l]["!cols"] = result[l]
        }
      }
    
      /* add worksheet to workbook */
      for (var k = 0; k < header.length; k++) {
        wb.SheetNames.push(ws_name[k])
        wb.Sheets[ws_name[k]] = ws[k]
      }
    
      var wbout = XLSX.write(wb, {
        bookType: bookType,
        bookSST: false,
        type: "binary"
      })
      saveAs(
        new Blob([s2ab(wbout)], {
          type: "application/octet-stream"
        }),
        `${filename}.${bookType}`
      )
    }
    

    Export2Excel.js 原文件

    // Export2Excel.js 
    /* eslint-disable */
    require('script-loader!file-saver');
    import XLSX from 'xlsx'
    
    function generateArray(table) {
      var out = [];
      var rows = table.querySelectorAll('tr');
      var ranges = [];
      for (var R = 0; R < rows.length; ++R) {
        var outRow = [];
        var row = rows[R];
        var columns = row.querySelectorAll('td');
        for (var C = 0; C < columns.length; ++C) {
          var cell = columns[C];
          var colspan = cell.getAttribute('colspan');
          var rowspan = cell.getAttribute('rowspan');
          var cellValue = cell.innerText;
          if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
    
          //Skip ranges
          ranges.forEach(function (range) {
            if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
              for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
            }
          });
    
          //Handle Row Span
          if (rowspan || colspan) {
            rowspan = rowspan || 1;
            colspan = colspan || 1;
            ranges.push({
              s: {
                r: R,
                c: outRow.length
              },
              e: {
                r: R + rowspan - 1,
                c: outRow.length + colspan - 1
              }
            });
          };
    
          //Handle Value
          outRow.push(cellValue !== "" ? cellValue : null);
    
          //Handle Colspan
          if (colspan)
            for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
        }
        out.push(outRow);
      }
      return [out, ranges];
    };
    
    function datenum(v, date1904) {
      if (date1904) v += 1462;
      var epoch = Date.parse(v);
      return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
    }
    
    function sheet_from_array_of_arrays(data, opts) {
      var ws = {};
      var range = {
        s: {
          c: 10000000,
          r: 10000000
        },
        e: {
          c: 0,
          r: 0
        }
      };
      for (var R = 0; R != data.length; ++R) {
        for (var C = 0; C != data[R].length; ++C) {
          if (range.s.r > R) range.s.r = R;
          if (range.s.c > C) range.s.c = C;
          if (range.e.r < R) range.e.r = R;
          if (range.e.c < C) range.e.c = C;
          var cell = {
            v: data[R][C]
          };
          if (cell.v == null) continue;
          var cell_ref = XLSX.utils.encode_cell({
            c: C,
            r: R
          });
    
          if (typeof cell.v === 'number') cell.t = 'n';
          else if (typeof cell.v === 'boolean') cell.t = 'b';
          else if (cell.v instanceof Date) {
            cell.t = 'n';
            cell.z = XLSX.SSF._table[14];
            cell.v = datenum(cell.v);
          } else cell.t = 's';
    
          ws[cell_ref] = cell;
        }
      }
      if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
      return ws;
    }
    
    function Workbook() {
      if (!(this instanceof Workbook)) return new Workbook();
      this.SheetNames = [];
      this.Sheets = {};
    }
    
    function s2ab(s) {
      var buf = new ArrayBuffer(s.length);
      var view = new Uint8Array(buf);
      for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
      return buf;
    }
    
    export function export_table_to_excel(id) {
      var theTable = document.getElementById(id);
      var oo = generateArray(theTable);
      var ranges = oo[1];
    
      /* original data */
      var data = oo[0];
      var ws_name = "SheetJS";
    
      var wb = new Workbook(),
        ws = sheet_from_array_of_arrays(data);
    
      /* add ranges to worksheet */
      // ws['!cols'] = ['apple', 'banan'];
      ws['!merges'] = ranges;
    
      /* add worksheet to workbook */
      wb.SheetNames.push(ws_name);
      wb.Sheets[ws_name] = ws;
    
      var wbout = XLSX.write(wb, {
        bookType: 'xlsx',
        bookSST: false,
        type: 'binary'
      });
    
      saveAs(new Blob([s2ab(wbout)], {
        type: "application/octet-stream"
      }), "test.xlsx")
    }
    
    export function export_json_to_excel({
      multiHeader = [],
      header,
      data,
      filename,
      merges = [],
      autoWidth = true,
      bookType=  'xlsx'
    } = {}) {
      /* original data */
      filename = filename || 'excel-list'
      data = [...data]
      data.unshift(header);
    
      for (let i = multiHeader.length-1; i > -1; i--) {
        data.unshift(multiHeader[i])
      }
    
      var ws_name = "SheetJS";
      var wb = new Workbook(),
        ws = sheet_from_array_of_arrays(data);
    
      if (merges.length > 0) {
        if (!ws['!merges']) ws['!merges'] = [];
        merges.forEach(item => {
          ws['!merges'].push(XLSX.utils.decode_range(item))
        })
      }
    
      if (autoWidth) {
        /*设置worksheet每列的最大宽度*/
        const colWidth = data.map(row => row.map(val => {
          /*先判断是否为null/undefined*/
          if (val == null) {
            return {
              'wch': 10
            };
          }
          /*再判断是否为中文*/
          else if (val.toString().charCodeAt(0) > 255) {
            return {
              'wch': val.toString().length * 2
            };
          } else {
            return {
              'wch': val.toString().length
            };
          }
        }))
        /*以第一行为初始值*/
        let result = colWidth[0];
        for (let i = 1; i < colWidth.length; i++) {
          for (let j = 0; j < colWidth[i].length; j++) {
            if (result[j]['wch'] < colWidth[i][j]['wch']) {
              result[j]['wch'] = colWidth[i][j]['wch'];
            }
          }
        }
        ws['!cols'] = result;
      }
    
      /* add worksheet to workbook */
      wb.SheetNames.push(ws_name);
      wb.Sheets[ws_name] = ws;
    
      var wbout = XLSX.write(wb, {
        bookType: bookType,
        bookSST: false,
        type: 'binary'
      });
      saveAs(new Blob([s2ab(wbout)], {
        type: "application/octet-stream"
      }), `${filename}.${bookType}`);
    }
    

     

    (二)、封装导出函数调用

    在src中新建utils文件夹 ——> 新建文件setMethods.js

    setMethods.js

    
    
    /**
     * Parse the time to string
     * @param {(Object|string|number)} time
     * @param {string} cFormat
     * @returns {string}
     */
    export function parseTime (time, cFormat) {
      if (arguments.length === 0) {
        return null
      }
      const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}"
      let date
      if (typeof time === "object") {
        date = time
      } else {
        if (typeof time === "string" && /^[0-9]+$/.test(time)) {
          time = parseInt(time)
        }
        if (typeof time === "number" && time.toString().length === 10) {
          time = time * 1000
        }
        date = new Date(time)
      }
      const formatObj = {
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
        a: date.getDay()
      }
      // eslint-disable-next-line
      const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
        let value = formatObj[key]
        // Note: getDay() returns 0 on Sunday
        if (key === "a") {
          return ["日", "一", "二", "三", "四", "五", "六"][value]
        }
        if (result.length > 0 && value < 10) {
          value = "0" + value
        }
        return value || 0
      })
      // eslint-disable-next-line
      return time_str
    }
    
    /**
     * Parse the json to excel
     *  tableJson 导出数据 ; filenames导出表的名字; autowidth表格宽度自动 true or false; bookTypes xlsx & csv & txt
     * @param {(Object)} tableJson
     * @param {string} filenames
     * @param {boolean} autowidth
     * @param {string} bookTypes
     */
    export function json2excel (tableJson, filenames, autowidth, bookTypes) {
      import("@/vendor/Export2Excel").then(excel => {
        var tHeader = []
        var dataArr = []
        var sheetnames = []
        for (var i in tableJson) {
          tHeader.push(tableJson[i].tHeader)
          dataArr.push(formatJson(tableJson[i].filterVal, tableJson[i].tableDatas))
          sheetnames.push(tableJson[i].sheetName)
        }
        excel.export_json_to_excel({
          header: tHeader,
          data: dataArr,
          sheetname: sheetnames,
          filename: filenames,
          autoWidth: autowidth,
          bookType: bookTypes
        })
      })
    }
    // 数据过滤,时间过滤
    function formatJson (filterVal, jsonData) {
      return jsonData.map(v =>
        filterVal.map(j => {
          if (j === "timestamp") {
            return parseTime(v[j])
          } else {
            return v[j]
          }
        })
      )
    }
    

    在需要使用到的 .vue文件组件中调用上面封装的函数

    //exportExcel.vue
    
    <script>
    import { parseTime } from "@/utils/setMethods"
    import { json2excel } from "@/utils/setMethods.js"
    export default {
      props: {
    
      },
      data () {
        return {
          listLoading: true,
          //表格的数据
          list: [
            {
              "id": 1,
              "timestamp": 375676396994,
              "author": "Melissa",
              "reviewer": "Angela",
              "title": "Gxjxpr Jdfjwf Lxssr Deyonm Moxy Ryxhzp Gxtukv Bvnmvmlo",
              "content_short": "mock data",
              "forecast": 29.75,
              "importance": 2,
              "type": "EU",
              "status": "published",
              "display_time": "1998-10-24 01:53:18",
              "comment_disabled": true,
              "pageviews": 1670,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 2,
              "timestamp": 14742538820,
              "author": "Anthony",
              "reviewer": "Angela",
              "title": "Ueeislixa Heid Dvcspjcuw Rrjyqi Wsqgyjsw",
              "content_short": "mock data",
              "forecast": 22.76,
              "importance": 2,
              "type": "JP",
              "status": "published",
              "display_time": "1990-03-21 05:30:52",
              "comment_disabled": true,
              "pageviews": 328,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 3,
              "timestamp": 1315789932004,
              "author": "Sharon",
              "reviewer": "Brian",
              "title": "Oofunoeoob Xreaujp Ndl Xoin Nyp Iedlihw Jlxyvu Ropkbfi Rljxpyl",
              "content_short": "mock data",
              "forecast": 36.57,
              "importance": 1,
              "type": "CN",
              "status": "deleted",
              "display_time": "1992-08-24 05:55:59",
              "comment_disabled": true,
              "pageviews": 1815,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 4,
              "timestamp": 538203551911,
              "author": "Scott",
              "reviewer": "Joseph",
              "title": "Yxrxsh Vwstgjqg Xqokntiuh Yrhsc Iiiugfk Hmoc",
              "content_short": "mock data",
              "forecast": 0.82,
              "importance": 2,
              "type": "US",
              "status": "draft",
              "display_time": "1982-10-19 21:06:25",
              "comment_disabled": true,
              "pageviews": 1575,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 5,
              "timestamp": 1171719793154,
              "author": "Barbara",
              "reviewer": "Angela",
              "title": "Xvewsrudv Sojbjzssbn Nqcnslcl Fwtx Sertvsqnnf Rxnom Jxhrdyqv Tyvktmi Dqeypf",
              "content_short": "mock data",
              "forecast": 22.84,
              "importance": 2,
              "type": "JP",
              "status": "published",
              "display_time": "1995-06-18 08:45:39",
              "comment_disabled": true,
              "pageviews": 1086,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 6,
              "timestamp": 98663463269,
              "author": "Dorothy",
              "reviewer": "Sharon",
              "title": "Jaeiqv Murhokxs Jeocvo Mdwf Ktgobp",
              "content_short": "mock data",
              "forecast": 84.76,
              "importance": 2,
              "type": "EU",
              "status": "published",
              "display_time": "1995-03-26 02:35:50",
              "comment_disabled": true,
              "pageviews": 1338,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 7,
              "timestamp": 846870802127,
              "author": "Richard",
              "reviewer": "Timothy",
              "title": "Hriiunzrh Jvt Xxtvpzype Gqoe Lkppdfbqh Txrfpgn Ykrloytzg Mgirqldy",
              "content_short": "mock data",
              "forecast": 35.18,
              "importance": 3,
              "type": "CN",
              "status": "draft",
              "display_time": "1973-07-02 19:02:43",
              "comment_disabled": true,
              "pageviews": 1335,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 8,
              "timestamp": 590582195083,
              "author": "George",
              "reviewer": "Helen",
              "title": "Tgcwifqcw Gogg Jsuypoa Hutu Rofnrslx Tntc Xehodrw Qrnsro Bcyilwymy",
              "content_short": "mock data",
              "forecast": 86.58,
              "importance": 2,
              "type": "US",
              "status": "draft",
              "display_time": "1980-06-28 20:47:17",
              "comment_disabled": true,
              "pageviews": 4937,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 9,
              "timestamp": 1548532983975,
              "author": "Brian",
              "reviewer": "Steven",
              "title": "Snasvoim Downll Npwbwionp Ihkdljs Yaxz Eugflokdf Hbevbqu Poukwladr Ahfkxfs",
              "content_short": "mock data",
              "forecast": 47.15,
              "importance": 2,
              "type": "CN",
              "status": "published",
              "display_time": "1993-01-05 23:12:51",
              "comment_disabled": true,
              "pageviews": 446,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 10,
              "timestamp": 1138507667384,
              "author": "Barbara",
              "reviewer": "Sandra",
              "title": "Elmpsxop Weih Bqimmtc Jnuv Stpuwnb Uouobwknbp Ntbq Jhxi Brqa Gmfowqi",
              "content_short": "mock data",
              "forecast": 49.13,
              "importance": 3,
              "type": "JP",
              "status": "draft",
              "display_time": "1995-07-06 04:31:51",
              "comment_disabled": true,
              "pageviews": 3377,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 11,
              "timestamp": 750337088505,
              "author": "Jose",
              "reviewer": "Sharon",
              "title": "Zzlns Pihvy Kgkok Xvcmm Fnryj Qulepu Khhnj Cpmy",
              "content_short": "mock data",
              "forecast": 88.75,
              "importance": 3,
              "type": "US",
              "status": "deleted",
              "display_time": "1974-11-21 19:51:59",
              "comment_disabled": true,
              "pageviews": 1965,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 12,
              "timestamp": 565505138784,
              "author": "Jennifer",
              "reviewer": "Edward",
              "title": "Kcqxrt Niwyrh Oop Dbbcmpjj Xstzd Obbucdnt Pprwq Puuclbxy Azzybptzc",
              "content_short": "mock data",
              "forecast": 97.64,
              "importance": 1,
              "type": "CN",
              "status": "published",
              "display_time": "1987-09-19 16:39:23",
              "comment_disabled": true,
              "pageviews": 488,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 13,
              "timestamp": 1109875948324,
              "author": "Laura",
              "reviewer": "Sharon",
              "title": "Hqbwqboqcb Fjixrn Sga Uioh Mjmxtbkom Nzsenp Wnqnrucee",
              "content_short": "mock data",
              "forecast": 44.47,
              "importance": 2,
              "type": "CN",
              "status": "published",
              "display_time": "2014-08-25 15:04:18",
              "comment_disabled": true,
              "pageviews": 2218,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 14,
              "timestamp": 1039817210594,
              "author": "Paul",
              "reviewer": "Ronald",
              "title": "Femyw Yvzgz Phhiht Svrxuoul Raxdisb Dpkhny Ynjrxxb Oykyn",
              "content_short": "mock data",
              "forecast": 93.17,
              "importance": 2,
              "type": "US",
              "status": "draft",
              "display_time": "2010-01-02 01:53:12",
              "comment_disabled": true,
              "pageviews": 2046,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 15,
              "timestamp": 1330523892167,
              "author": "Lisa",
              "reviewer": "Carol",
              "title": "Nqfdpohr Ovvodhn Agctq Dqtxloqo Wiqkrqds Lfkuy Nefqnwte Ryr",
              "content_short": "mock data",
              "forecast": 47.98,
              "importance": 2,
              "type": "US",
              "status": "draft",
              "display_time": "1999-12-12 15:07:15",
              "comment_disabled": true,
              "pageviews": 3265,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 16,
              "timestamp": 422707252878,
              "author": "Linda",
              "reviewer": "Kenneth",
              "title": "Hxguq Stg Xjpsiq Yhcstrkix Uljbt Xgdnb Vkowujuj Xse",
              "content_short": "mock data",
              "forecast": 20.19,
              "importance": 3,
              "type": "US",
              "status": "draft",
              "display_time": "1971-04-10 04:13:50",
              "comment_disabled": true,
              "pageviews": 564,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 17,
              "timestamp": 5845605622,
              "author": "Jeffrey",
              "reviewer": "Steven",
              "title": "Xzdix Miorfek Hqbkpuu Hwho Fqmhhpist Hitsf Unmh",
              "content_short": "mock data",
              "forecast": 32.68,
              "importance": 1,
              "type": "US",
              "status": "draft",
              "display_time": "1987-11-14 08:09:31",
              "comment_disabled": true,
              "pageviews": 2087,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 18,
              "timestamp": 272475524524,
              "author": "Joseph",
              "reviewer": "Sandra",
              "title": "Wmeim Uncmpq Iolymbvmdc Pkojiqc Utcskuu Qselvstud",
              "content_short": "mock data",
              "forecast": 94.84,
              "importance": 2,
              "type": "JP",
              "status": "draft",
              "display_time": "2012-12-16 01:54:13",
              "comment_disabled": true,
              "pageviews": 745,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 19,
              "timestamp": 590437287594,
              "author": "Karen",
              "reviewer": "Ruth",
              "title": "Gvred Vbdtfn Vbby Viokn Xzjyqri Dqi Dgkd Ttelcmi Spqmqo Sui",
              "content_short": "mock data",
              "forecast": 44.47,
              "importance": 3,
              "type": "JP",
              "status": "deleted",
              "display_time": "2013-11-21 06:36:17",
              "comment_disabled": true,
              "pageviews": 4950,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            },
            {
              "id": 20,
              "timestamp": 749752800977,
              "author": "Anthony",
              "reviewer": "Betty",
              "title": "Ccvicm Cttckbtw Esbeukpqvl Dmnt Eekplww Yjeqrxgc Vqhbyr Axhffgf",
              "content_short": "mock data",
              "forecast": 50.06,
              "importance": 2,
              "type": "US",
              "status": "draft",
              "display_time": "2012-02-04 03:48:46",
              "comment_disabled": true,
              "pageviews": 640,
              "image_uri": "https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3",
              "platforms": [
                "a-platform"
              ]
            }
          ],
          rolesList: [
            {
              userId: 123,
              userNum: "admin", // 用户账号
              userName: "admin", // 用户名称
              userDescription: "这个账户是超级管理员账户"
            }, {
              userId: 124,
              userNum: "wxf123", // 用户账号
              userName: "张三", // 用户名称
              userDescription: "这个账户是一级管理员账户"
            }, {
              userId: 125,
              userNum: "cz123", // 用户账号
              userName: "李氏", // 用户名称
              userDescription: "这个账户是二级管理员账户"
            }
          ]
    
        }
      },
      computed: {
    
      },
      created () {
    
      },
      mounted () {
        this.listLoading = false
      },
      watch: {
    
      },
      methods: {
        //点击下载事件
        handleDownload () {
            //注意:组装的导出excel所需要的数据结构
          var excelDatas = [
            {
              tHeader: ["Id", "Title", "Author", "Readings", "Date"], // sheet表一头部
              filterVal: ["id", "title", "author", "pageviews", "display_time"], // 表一的数据字段
              tableDatas: this.list, // 表一的整体json数据
              sheetName: "sheet1"// 表一的sheet名字
            },
            {
              tHeader: ["序号", "标题", "作者", "服务"],
              filterVal: ["id", "title", "author", "reviewer"],
              tableDatas: this.list,
              sheetName: "sheet2"
            },
            {
              tHeader: ["序号", "名字", "描述"],
              filterVal: ["userId", "userName", "userDescription"],
              tableDatas: this.rolesList,
              sheetName: "sheet5555"
            }
          ]
            //   引入的函数
          json2excel(excelDatas, "数据报表", true, "xlsx")
        }
    
      },
      components: {
    
      },
      filters: {
        timestampToTime (val, timestamp) {
          return parseTime(val, timestamp)
        }
      }
    }
    </script>
    
    

     

    亲测有效!!  欢迎留言交流

     

    展开全文
  • python读取Excel表格文件

    万次阅读 多人点赞 2019-07-26 10:55:52
    python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1、安装Excel读取数据的库-----xlrd 直接pip install xlrd安装xlrd库 #引入Excel库的xlrd import xlrd 2、...
  • EXCEL表格大全(2000多套)+办公室专用表格200套,制作OA系统必备
  • 本经验是教大家如何将TXT文档数据导入到Excel表格,方便继续进行数据编辑和分析。 工具/原料 TXT文档数据 EXCEL;本经验以Microsoft office Excel 2016为例 方法/步骤 1 首先要有txt文档数据,...
  • 如何Python中创建Excel表格

    万次阅读 多人点赞 2018-07-31 21:24:56
    但是当我们爬取一些小说或一些图片时,我们需要分类管理这些数据,这时候文件似乎无法直接描述出这些数据的关系,那么我们就需要创建一个Excel表格了   创建Excel表格一般有两种方法: 一:通过导入xlwt库来创建,这种...
  • 手把手学习Excel电子表格

    千人学习 2019-05-13 15:30:56
    2、创新的教学模式:手把手教您电子表格,一看就懂,一学就会; 3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标; 4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您...
  • Navicat怎样导入Excel表格和txt文本的数据

    万次阅读 多人点赞 2018-07-02 11:29:11
    Navicat怎样导入Excel表格数据 1. 准备excel数据表,第一行是字段名,第二到五行是数据 (1.当需要存储的字段为null时,对应的单元格不写 2.注意数据是哪个工作表中,例如:下面例子中的数据是sheet1工作表...
  • Aspose.Cells - 任何平台上操作Excel电子表格 用于创建,编辑,转换和渲染Excel文件的原生API,可任何平台上将电子表格文档导出为多种格式。 Aspose.Cells for .NET - .NET Excel文件操作API 创建,读取,...
  • MATLAB生成excel表格

    万次阅读 多人点赞 2018-11-13 18:26:00
    利用excel对数据进行复杂处理有一定局限性,于是选择导入MATLAB进行处理。此贴针对MATLAB将数据导出至excel,列举一些简单的例子,帮助大家学习。
  • 最近由于要交论文和一系列的报告才不得不做试验,...这个时候就牵涉到了如何将python直接处理的得到的数据存入excel表格当中,之后计算的时候也要从Excel表格当中读出这些数据来,接下来讲一下自己这个过程中的一些学
  • C#展示Excel表格

    千次阅读 2017-07-24 22:20:03
    上一篇讲了利用.NET存储Excel表格的思路,C#存储Excel表格Excel表格存储到数据库后,我们可以利用C#控件将存储的Excel做一个美观的展示与分析,众多WinForm控件里比较适合展示Excel表格的也就是Datagridview和...
  • FindAndKillProcessByName("EXCEL"); //结束excel进程 FindAndKillProcessByName("et"); //结束wps进程 Thread.Sleep(1000); //写入excel延时 FileStream fs = new FileStream(path, FileMode.Create); ...
  • Ps和Excel结合,快速制作透明表格

    千次阅读 2020-08-18 19:48:53
    Step1: 制作excel表格,导出为pdf格式 Step2: 打开PS,文件选项卡中选择新建,新建一个空白文档 Step3: 文件选项卡中选择“置入链接的智能对象”将pdf表格导入PS Step4:取消背景图层(点击下图中的眼睛图标)...
  • Python3读取和写入excel表格数据

    万次阅读 多人点赞 2020-04-13 21:04:15
    一、python读取excel表格数据 1、读取excel表格数据常用操作 2、xlrd模块的主要操作 3、读取单元格内容为日期时间的方式 4、 读取合并单元格的数据 二、python写入excel表格数据 1、写入excel表格数据常用操作...
  • EXCEL表格超链接图片

    千次阅读 2020-05-08 19:59:14
    excel表格超链接图片只需三步,就能Excel中看到那种图了 2、第二项,文件夹中整理准备好设备图片。 要注意一点,这些图片的命名,要和Excel中的设备名称是一样的哦。 excel表格超链接图片只需三步,就能Excel...
  • 将长表格图片转Excel表格

    万次阅读 2021-07-07 00:43:00
    最近很多朋友和同事问我如何将图片转Excel表格,老实说这方面现成的工具基本都不好使,不过百度AI有支持进行表格图片识别的接口,我们只要按照百度AI的要求传入相应的数据进行识别即可。 需求: 有两张超长的表格...
  • 使用最新的poi-4.1.0.jar导入导出Excel表格——读取Excel表格数据用法 其中主要的一点心得就是switch语句哪里进行读取数据转换时,我看到网上的一些用法都是使用 HSSFCell.CELL_TYPE_STRING、HSSFCell.CELL_TYPE_...
  • 当我们在制作Excel表格时候,为了省麻烦直接里面制作多个表格,但又不知道如何才能分页将这些表格打印出来,那么遇到这种情况我们应该如何操作呢?是重新制作多个Excel表格,再一个个的打印,还是有什么好的方法...
  • 如何在excel中将整个表格原样复制到另一表格中_百度经验https://jingyan.baidu.com/article/20b68a884efa73796dec6268.html
  • 使用EXCEL表格制作甘特图Gantt

    千次阅读 2016-02-25 18:55:45
    转载【https://www.ablebits.com/office-addins-blog/2014/05/23/make-gantt-chart-excel/】
  • VC++ Excel电子表格读写示例

    千次阅读 2016-03-12 13:46:11
    通过本文及配套示例源码你可以更加灵活的控制Excel表格文件,其中包括创建新Excel文件、写入表格数据、读取表格数据(包括对原建Excel文件自已手工添加的行、列数据的准确读取),删除已有Excel表格,对表格中指定行、...
  • Excel表格模板打包下载(2240个) 收集了各类各行业Excel表格模板 等模板,如有需要,底部留言。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 187,161
精华内容 74,864
关键字:

在excel如何制作表格