精华内容
下载资源
问答
  • 修改表头
    千次阅读
    2019-10-17 22:07:04

    套用【Python编程快速上手—让繁琐工作自动化】一书中捋清思路的方法,从思路到代码行为、从抽象(想法)到具体(方法)、递进列出代码需要实现的内容。

     总的来说,该程序必须做到以下几点:

    • 找出当前工作目录中的所有 CSV 文件
    • 读取每个文件的全部内容
    • 修改第一行,将内容写入一个新的 CSV 文件

    在代码层面上,这意味着该程序需要做到以下几点:

    • 循环遍历从 os.listdir()得到的文件列表,跳过非 CSV 文件
    • 创建一个 CSV Reader 对象,读取并修改该文件的内容
    • 创建一个 CSV Writer 对象,将修改好的数据写入新文件 
    #coding=UTF-8
    import os
    import csv
     
    root = r'D:\03code\python\csv_data'#需要处理csv文件的根目录
    root_root, root_dir_name = os.path.split(root)
     
    #优先遍历父目录、不遍历目录下的快捷方式
    #os.walk()中topdown=True从父到子,topdown=False代表从子到父遍历
    #root相对根目录、及其下属dirs文件夹、本层files文件(不含子文件夹文件)
    file_walk = os.walk(root, topdown=True, onerror=None, followlinks=False)
     
    #新建好处理后成果——root的镜像文件夹rootnew,注意topdown=True
    ls = []
    for root, dirs, files in file_walk:
        new_csv_root = root.replace(root_dir_name,root_dir_name+'_modified') 
        ## print(new_csv_root)           
        os.mkdir(new_csv_root)
     
        for file in files:
            file_path = os.path.join(root,file)
            print(file_path)
            if '.csv' in file_path:#将所有csv文件存入ls
                ls.append(file_path) 
    
    num = 0 
    #遍历根目录下所有excel文件
    for csv_path in ls:
        num += 1
        new_csv_path = csv_path.replace(root_dir_name,root_dir_name+'_modified')
        new_csv_root,csv_name = os.path.split(new_csv_path)#将文件名和根目录分开
         
        #01【准备新csv内容:新表头+源数据行】    
        #读取源csv文件数据行部分,存入列表partHeader
        inputcsvFile = open(csv_path)
        inputcsvReader = csv.reader(inputcsvFile)#len(csvReader)不存在
        inputcsvReader.line_num
        inputcsvData = list(inputcsvReader)
        partHeader = inputcsvData[0][1:]
    
        #获取源csv文件除表头外的行数,将行数值存入列表rowNum
        rowNum = []
        rowNum.append(len(inputcsvData)-1)#数据行数
        
        #拼接新csv文件表头
        Header = rowNum + partHeader#注意列表相加
    
        #准备写入新csv文件的内容(列表)
        csvRows = []
        csvRows.append(Header)
        for row in inputcsvData[1:]:#inputcsvReader
            csvRows.append(row)
           
        #02【将以上准备好的新csv内容写入】
        #新建空csv
        outputcsvFile = open(new_csv_path, 'w', newline='')#创建对象
        outputcsvWriter = csv.writer(outputcsvFile)
        #将组织好的csvRows内容逐行写入
        for row in csvRows:
            outputcsvWriter.writerow(row)
        outputcsvFile.close()
     
    print('共{}csv文件修改成!'.format(num))
    print('请在excel根目录的上级文件中寻找同名_modified文件夹!')

     

    更多相关内容
  • vue导出excel并修改表头样式(请先阅读readme) 安装npm install 执行npm run serve
  • VB写的修改表头加密数据库程序
  • elementUI修改表头指定列

    elementUI如何修改表头的某一列样式?

    今天碰到个需求,要在elementUI 的表格头上根据不同的列名称改变颜色。

    如图所示:

    在这里插入图片描述

    实现方法

    //调用headerRowStyle方法
    <el-table :data="tableData" border :header-cell-style="headerRowStyle">
    

    定义headerRowStyle方法

     headerRowStyle(obj){
         //根据列的标签名来指定修改
            if(obj.column.label=="日期"){ 
              return 'color: #fff;background:#00bfbf'
            }
            if(obj.column.label=="姓名"){
              return 'color: #fff;background:#ffd454'
            }
            if(obj.column.label=="地址") {
              return 'color:#00ffff'
            }
          }
    

    完整代码如下:

    <template>
      <el-table
        :data="tableData"
        border
        style="width: 100%" :header-cell-style="headerRowStyle">
        <el-table-column
          prop="date"
          label="日期"
          width="180">
        </el-table-column>
        <el-table-column
          prop="name"
          label="姓名"
          width="180">
        </el-table-column>
        <el-table-column
          prop="address"
          label="地址">
        </el-table-column>
      </el-table>
    </template>
    
    <script>
      export default {
        name: "table",
        data() {
          return {
            tableData: [{
              date: '2016-05-02',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1518 弄'
            }, {
              date: '2016-05-04',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1517 弄'
            }, {
              date: '2016-05-01',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1519 弄'
            }, {
              date: '2016-05-03',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1516 弄'
            }]
          }
        },
        created() {
          this.setdates(this.tableData)
        },
        methods: {
    
    
          headerRowStyle(obj){
    
    
            if(obj.column.label=="日期"){
              return 'color: #fff;background:#00bfbf'
            }
            if(obj.column.label=="姓名"){
              return 'color: #fff;background:#ffd454'
            }
            if(obj.column.label=="地址") {
              return 'color:#00ffff'
            }
          },
        }
      };
    </script>
    
    
    
    <style scoped>
    
    </style>
    
    
    
    

    原文地址

    展开全文
  • 问题:如何更改表头的名称,如何双击...点击表头弹框出现输入框,修改表头名称 2.右键点击表头添加表头,增加一列(右键浏览器阻止默认事件)e.preventDefault() 3. 双击cell内容,切换为输入框,失去焦点完成修改

     问题:如何更改表头的名称,如何双击单元格切换为输入框,修改表格内容

     <template>
      <div class="app-container">
        <el-table
          border
          :data="tableData"
          style="width: 100%;align: center"
          max-height="550"
          :cell-class-name="tableCellClassName"
          @cell-click="tsetClick"
          @header-click="headerTest"
          @header-contextmenu="headercontextmenu"
        >
          <template v-for="item in tableColumnList">
            <el-table-column
              :key="item.prop"
              :label="item.propName"
              :prop="item.prop"
              :min-width="item.minWidth"
              align="center"
            >
              <template slot-scope="scope">
                <!-- 判断是哪个单元格被点击 -->
                <template
                  v-if="scope.row.index === tabClickIndex && scope.column.index === tableCellClickColumnIndex"
                >
                  <!-- 被点击的单元格变成输入框 -->
                  <el-input
                    ref="focusingRef"
                    v-model="scope.row[scope.column.property]"
                    autofocus
                    style="height: 100%"
                    placeholder="请输入"
                    @blur="inputBlur"
                  />
                </template>
                <template v-else>{{ scope.row[scope.column.property] }}</template>
              </template>
            </el-table-column>
          </template>
          <el-table-column width="120" prop="addTableHeaderName" align="center">
            <template slot="header">
              <i class="el-icon-plus" style="font-size: 20px" />
            </template>
          </el-table-column>
        </el-table>
    
        <el-dialog :visible.sync="dialogForHeader" title="修改项目流程名称" width="800">
          <el-form ref="form" :model="tableHeader" label-width="80px">
            <el-form-item label="表头名称">
              <el-input v-model="tableHeader.tableHeaderName" placeholder="请输入表头名称" />
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="submitForm">确 定</el-button>
            <el-button @click="cancel">取 消</el-button>
          </div>
        </el-dialog>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          contextMenuVisible: false,
          tableCellIndex: "", // 列计数器
          columnName: "", // 列名
          tableCell: { tableCellData: "" }, // 表格定义
          dialogForTable: false, // 表格编辑弹出框
          num: 7, // 列个数
          tabClickIndex: null, // 点击的单元格
          tableHeader: { tableHeaderName: "", property: "" }, // 表头定义
          dialogForHeader: false, // 表头编辑弹出框
          // 这里为了简便我就没有调用后台接口获取数据,直接写的假数据  你要用的话可以调用后台接口获取tableColumnList,注意数据格式
          tableColumnList: [
            { prop: "skill", propName: "自我要求" },
            { prop: "Basics", propName: "文案功底" },
            { prop: "taste", propName: "审美能力" },
            { prop: "communicate", propName: "沟通能力" },
            { prop: "study", propName: "学习研究" },
            { prop: "edition", propName: "版本管理" },
            { prop: "experience", propName: "项目经验" },
            { prop: "leadership", propName: "领导力" },
          ],
    
          tableData: [
            {
              skill: "123",
              Basics: "445",
              taste: "76354",
              communicate: "1231",
              study: "的发放",
              edition: "踩踩踩",
              experience: "vbdf",
              leadership: "哗哗哗",
            },
            {
              skill: "123",
              Basics: "445",
              taste: "76354",
              communicate: "1231",
              study: "的发放",
              edition: "踩踩踩",
              experience: "vbdf",
              leadership: "哗哗哗",
            },
          ],
        };
      },
      methods: {
        getIndex(index) {
          //获取点击的索引
          console.log("index", index);
          this.tableCellIndex = null;
          this.tableCellIndex = index;
        },
        tsetClick(row, column, cell, event) {
          //cel-click 当某个单元格被点击点击事件
          this.tabClickIndex = row.index;
          this.tableCellClickColumnIndex = column.index;
    
          if (this.$refs.focusingRef != undefined) {
            this.$nextTick(() => {
              // 自动获取焦点 element组件autofocus失效 这个地方还有问题应该
              var refs = this.$refs["focusingRef"].$refs;
              console.log(refs);
            });
          }
        },
        // 添加表头,修改表头
        headerTest(val) {
          //点击表头事件 header-click(column,event)
          if (val.property == "addTableHeaderName") {
            // console.log('这里是表格tou部点击,添加头部事件', val)
            this.tableColumnList.push({
              prop: this.num.toString(),
              propName: "点击编辑表头名称",
            });
            for (let i = 0; i < this.tableData.length; i++) {
              // 向对象中追加属性, 参数 object/Array  property/index   value
              this.$set(this.tableData[i], [parseInt(this.num)], "请添加内容");
            }
            this.num = this.num + 1;
          } else {
            // 点击的不是添加表头表头,则是其他表头
            console.log("这里是表格tou部点击,修改头部事件", val);
            this.tableHeader.tableHeaderName = "";
            this.tableHeader.property = "";
            // tableHeader存储当前被点击头部的label和属性  绑定到弹框的form表单上
            this.tableHeader.tableHeaderName = val.label;
            this.tableHeader.property = val.property;
            // console.log(this.tableHeader.tableHeaderName)
            // 弹框
            this.dialogForHeader = true;
          }
        },
        headercontextmenu(val, event) {
          // 右击
          console.log("val", val);
          // console.log(val.property); //右击获取表头的property 的名称
          event.preventDefault(); // 隐藏浏览器默认右击菜单
          this.$confirm("是否需要删除此列", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
            .then(() => {
              this.tableColumnList.splice(val.index, 1); //删除对应的表头
              this.tableData.forEach((item) => {
                //删除对应的表头内容
                delete item[val.property];
              });
            })
            .catch(() => {
              this.$message({
                type: "info",
                message: "已取消删除",
              });
            });
        },
        inputBlur(row, event, column) {
          //失去焦点事件
          this.tabClickIndex = null;
          this.tableCellClickColumnIndex = null;
        },
        tableCellClassName({ row, column, rowIndex, columnIndex }) {
          // 把每一行的索引放进row
          row.index = rowIndex;
          column.index = columnIndex;
        },
        // 表头编辑提交
        submitForm() {
          console.log("点击提交按钮");
          for (let i = 0; i < this.tableColumnList.length; i++) {
            if (this.tableColumnList[i].prop === this.tableHeader.property) {
              this.tableColumnList[i].propName = this.tableHeader.tableHeaderName;
            }
          }
          console.log(this.tableColumnList);
          this.dialogForHeader = false;
        },
    
        // 取消表头编辑
        cancel() {
          // console.log("点击取消按钮");
          this.dialogForHeader = false;
        },
      },
    };
    </script>

    功能介绍:

    1.点击表头弹框出现输入框,修改表头名称

    2.右键点击表头添加表头,增加一列(右键浏览器阻止默认事件)e.preventDefault()

    3. 双击cell内容,切换为输入框,失去焦点完成修改

    展开全文
  • 修改表头加密数据库软件资料
  • el-table修改表头样式

    2021-12-27 14:00:05
    实现效果: 添加 :header-cell-style="{background: '#EBEEF5',border: '0px solid #DDDDDD',height: '10px',color:'#2B579A'}" <el-table ref="sortTable" :height="sortTableHeight" style="width: 100%;...

    实现效果:
    在这里插入图片描述
    添加 :header-cell-style="{background: '#EBEEF5',border: '0px solid #DDDDDD',height: '10px',color:'#2B579A'}"

    <el-table
        ref="sortTable"
        :height="sortTableHeight"
        style="width: 100%;"
        border
        :row-style="tableRowClassName"
        :stripe="false"
        :header-cell-style="{background: '#EBEEF5',border: '0px solid #DDDDDD',height: '10px',color:'#2B579A'}"
        :data="tableData">
    </el-table>
    
    展开全文
  • 修改表头加密数据库.7z
  • el-table 修改表头样式

    千次阅读 2022-04-19 09:42:56
    el-table 表格组件想要修改表头,可以使用 header-row-class-name 和 header-cell-class-name两种方式(仅个人习惯使用的两种方式) 第一种:header-cell-class-name(个人更倾向这种方式,写起来也更舒服) 首先,...
  • 合并el-table表头效果呈现
  • 以wordpress数据库表为例。先登入你的phpmyadmin中,选中你的wordpress数据库,选择sql出现如下图,然后在空白框输入sql命令SelectCONCAT('ALTERTABLE',table_name,'RENAMETO',table_name,';')FROMinformation_schema...
  • SheetJS/js-xlsx修改表头实例操作

    千次阅读 2021-12-11 16:28:20
    SheetJS/js-xlsx修改表头实例操作
  • 修改表头加密数据库.rar
  • element ui Calendar日历组件 修改表头内容 自定义
  • el-table修改表头 自定义表头报错 多选时删除表头 修改表头 参考element文档 自定义表头 会报错 error: ‘scope’ is defined but never used (vue/no-unused-vars) at xxxxxx <template slot="header" slot-...
  • 机器学习中经典的鸢尾花数据集,可用于理解分类问题的算法。这份数据在原始数据的基础上,更改了表头部分,便于数据的使用。
  • java源码:修改表头加密数据库.rar
  • ### 没有做任何任何行高设置,加载完后,检查显示行高是184.4 !... ### 代码中设置行高后: :header-row-style="{'height': '100px','color':'red'}" ...设置行高小于184.4时表头高度不变,很是费解,
  • <el-table-column prop="name"> <template slot="header" slot-scope="scope"> <span>名字<...el-tooltip class="item" effect="dark" content="这是提示文字" placement="right">...
  • 修改表头背景色 在el-table标签上设置以上属性即可 :header-cell-style="{color: ‘#848484’, fontSize: ‘14px’, backgroundColor: ‘#qua’}" 修改表格内容背景色 ::v-deep .el-table__body tbody tr:nth-child...
  • 如下所示: layui.use('table', function () { var table = layui.table; table.render({ elem: '#desTable' , url: '${ctx}/alarm/queryEventShowScatter' , even: true , page: { //支持传入 laypage 组件...
  • 通过继承CListCtrl类和CHeaderCtrl类,实现自定义表头格式
  • 【elementUI】:header-cell-style 修改表头高度为什么无效?
  • 修改表头背景颜色和字体颜色效果图: 直接上代码: 修改表头的背景颜色横向渐变色的代码 html: <template> <div> <el-table :data="tableData" border> <el-table-column prop="date" ...
  • 我希望修改单独某个表头的样式 其实很简单,在官网的第一个例子就给出了答案: 我们关注第一列的表头单元格样式,然后去看代码,先来看column的写法: 这里的slots就是表头单元格对应的插槽,title用于表示对应的...
  • <el-table :header-cell-style="{background:'#F5F6FA',color:'#666E92'}"></el-table>...在表头处添加一行代码即可: :header-cell-style="{background:'#eef1f6',color:'#606266'}" //颜色自选
  • //将表头放到原始数据里面去,要保证表头在数组的最前面 const newData = [headerDisplay, ...data]; //加了一句skipHeader:true,这样就会忽略原来的表头 var worksheet = XLSX.utils.json_to_sheet(newData, {...
  • 版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。...例如:将第1列的列表头从"ID"修改为 "序号" dgv.Columns(0).HeaderCell.Value =...
  • 显示隐藏列 $("#表格id").hideCol("需要隐藏的列"); $("#表格id").showCol("需要显示的列"); 举例: $("#" + _tableId).hideCol("...#直接设

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,338
精华内容 34,135
关键字:

修改表头

友情链接: demoghs.zip