整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Excel轉Word表格不變形,用網頁格式1分鐘搞定

          Excel轉Word表格不變形,用網頁格式1分鐘搞定,別再逐個調整了!

          xcel表格直接粘貼到Word文檔會變形,這個問題相信很多人都遇到,今天就跟大家分享下解決的方法,操作其實非常的簡單,只不過可能很多人都不知道

          一、原理解析

          Excel表格粘貼在Word文檔中會發生變形,本質的原因就是表格的格式變化了。

          Excel與Word表格它們對【列寬】、【行高】等格式的度量規則是不一致的,因為格式變化了,所以表格就會發生變形。

          想要實現不變形的相互轉換,最重要的就是找到一種2者都可以識別的格式。【網頁格式】就能滿足這個要求,只需3步即可輕松搞定

          轉換步驟:Excel表格→網頁格式表格→Word表格

          這個過程也是可逆的,下面來看下具體操作

          二、Excel轉換網頁格式

          打開Excel表格,點擊左上角的【文件】然后找到【另存為】點擊藍色的【更多選項】,將文件的格式設置為【單個文件網頁】,然后選擇一個儲存的位置,最下方將發布設置為【工作表】最后點擊發布,點擊發布后會再次跳出一個窗口,選擇表格所在的sheet位置,直接點擊發布即可。

          三、Word打開

          找到另存的網頁文件,點擊鼠標右鍵找到【打開方式】選擇使用【Word】文檔打開,如果超過了1頁直接在右下角向下拖動整個文件調整位置。最后需要將網頁格式的文件另存為Word文檔的格式即可。至此設置完畢

          以上就是今天分享的全部內容,我是Excel從零到一,關注我,持續分享更多Excel技巧


          如果你想要提高工作效率,不想再求同事幫你解決各種Excel問題,可以了解下我的專欄,講解了函數、圖表、透視表、數據看板等常用功能,帶你快速成為Excel高手

          數據分析中,將數據以表格的形式呈現出來是必不可少的環節,Pandas 是一個非常強大的數據分析庫,提供了很多方便的方法來處理和展示數據。今天,我們將學習如何使用 Pandas 自定義表格樣式并將其導出為 HTML 格式。

          通過這種方式,我們可以更好地組織和展示數據,并在網頁上共享我們的分析結果,并且,掌握Pandas數據存儲和表格樣式自定義的方式,在日常工作過程中有更多應用和實踐意義,將拓展我們的數據分析思路。

          導入數據

          首先,導入pandas庫,并為其設置別名pd,使用pandas的read_excel函數讀取指定路徑下的Excel文件,并將其內容存儲在DataFrame對象df中。

          import pandas as pd
          
          df=pd.read_excel(r'C:\Users\shangtianqiang\Desktop\2023年胡潤百富榜.xlsx')
          #默認顯示DataFrame的前五行。
          df.head()

          df.info()顯示DataFrame的簡要信息,包括索引、列名、數據類型和每列的非空值數量,這里顯示該數據表含有1241行數據。

          #數據預覽
          df.info()

          使用iloc方法篩選DataFrame的前100行數據。

          df=df.iloc[:100,:]#篩選前100行數據
          df

          自定義樣式

          定義一個樣式對象style,該對象用于生成HTML的樣式,這里對篩選出來的前100行的數據進行了樣式設置,它定義了一個居中的標題(h1標簽),一個表格(table標簽),以及表格中的表頭(th標簽)和單元格(td標簽)。

          • h1 標簽:文本居中,字體大小為24像素,下邊距為10像素;
          • table 標簽:邊框合并(border-collapse: collapse;),寬度為100%;
          • th, td 標簽:邊框為1像素的實線,內邊距為8像素,文本居中;
          • th 標簽:背景顏色為淺灰色(#f2f2f2)。
          # 定義CSS樣式,添加標題“2023年胡潤百富榜”  
          style="""  
          <style> 
          h1 {  
              text-align: center;  
              font-size: 24px;  
              margin-bottom: 10px;  
          }  
          table {  
              border-collapse: collapse;  
              width: 100%;  
          }  
          th, td {  
              border: 1px solid black;  
              padding: 8px;  
              text-align: center;  
          }  
          th {  
              background-color: #f2f2f2;  
          }  
          </style>  
          <head><title>2023年胡潤百富榜</title></head>
          <h1>2023年胡潤百富榜</h1> 
          """  

          將DataFrame轉換為HTML代碼,并添加樣式,index=False來去除行索引 。

          # 將DataFrame轉換為HTML代碼,并添加樣式  
          html=style + df.to_html(index=False)  # 使用index=False來避免顯示行索引 

          將生成的HTML內容寫入到名為'2023年胡潤百富榜.html'的文件中。

          # 將HTML代碼寫入文件或打印到控制臺  
          with open('2023年胡潤百富榜.html', 'w') as file:  
              file.write(html)  # 將HTML代碼寫入文件output.html

          完整版的代碼如下所示。

          import pandas as pd
          
          df=pd.read_excel(r'C:\Users\shangtianqiang\Desktop\2023年胡潤百富榜.xlsx')
          df=df.iloc[:100,:]#篩選前100行數據
            
          # 定義CSS樣式,添加標題“2023年胡潤百富榜”  
          style="""  
          <style> 
          h1 {  
              text-align: center;  
              font-size: 24px;  
              margin-bottom: 10px;  
          }  
          table {  
              border-collapse: collapse;  
              width: 100%;  
          }  
          th, td {  
              border: 1px solid black;  
              padding: 8px;  
              text-align: center;  
          }  
          th {  
              background-color: #f2f2f2;  
          }  
          </style>  
          <head><title>2023年胡潤百富榜</title></head>
          <h1>2023年胡潤百富榜</h1> 
          """  
            
          # 將DataFrame轉換為HTML代碼,并添加樣式  
          html=style + df.to_html(index=False)  # 使用index=False來避免顯示行索引  
            
          # 將HTML代碼寫入文件或打印到控制臺  
          with open('2023年胡潤百富榜.html', 'w') as file:  
              file.write(html)  # 將HTML代碼寫入文件output.html

          導出的HTML表格樣式如下所示,整體圖表風格較為簡潔。

          導入數據

          html的格式數據也是數據存儲的一種方式,使用read_html命令可以將其很便捷地導入,從而進行接下來的數據分析。

          import pandas as pd
          
          df_html=pd.read_html('2023年胡潤百富榜.html',encoding='gbk')[0]
          df_html

          通過學習如何使用 Pandas 自定義表格樣式并將其導出為 HTML 格式,我們掌握了更豐富的數據處理和展示技巧,并且,還可以根據實際業務需求來自定義表格樣式,實現與他人共享數據的目的。

          Python是一門易學易用、代碼簡潔的編程語言,廣泛應用于各個領域,尤其適合用于辦公自動化。

          通過使用Python實現辦公自動化,不僅能夠大幅提升工作效率,還能有效減少重復性的任務。Python的應用場景非常廣泛,包括操作Word、Excel、PPT,處理文本和文件,自動發送郵件,進行網頁自動化操作,定時任務調度,圖像處理與識別,自動生成報表,以及整合API和外部系統等。這些功能的集成使用,可以顯著提高辦公效率。

          在Python生態系統中,python-docx、jinja2python-docx-template 等庫為我們提供了強大且靈活的工具,使得我們能夠以編程的方式輕松創建和修改Word文檔,從而進一步優化辦公自動化流程。

          python-docx

          python-docx是一個Python庫,用于創建和修改Microsoft Word文檔。

          它可以用來添加文本、插入圖片、創建表格、設置格式和樣式等。

          這個庫特別適合需要自動生成報告或處理文檔的應用。

          from docx import Document
          from docx.shared import Inches
          
          # 創建文檔對象
          document=Document()
          
          # 添加標題
          document.add_heading('文檔標題DHub', 0)
          
          # 添加段落,包含粗體和斜體文本
          p=document.add_paragraph('這是一個普通段落,包含一些 ')
          p.add_run('粗體').bold=True
          p.add_run(' 和一些 ')
          p.add_run('斜體。').italic=True
          
          # 添加一級標題
          document.add_heading('一級標題', level=1)
          
          # 添加引用樣式的段落
          document.add_paragraph('強烈引用', style='Intense Quote')
          
          # 添加無序列表項
          document.add_paragraph('無序列表項', style='List Bullet')
          
          # 添加有序列表項
          document.add_paragraph('有序列表項', style='List Number')
          
          # 添加圖片,并設置寬度
          document.add_picture('./images/monty-truth.png', width=Inches(1.25))
          
          # 添加表格
          records=(
              (3, '101', '火腿'),
              (7, '422', '雞蛋'),
              (4, '631', '火腿、火腿、雞蛋和火腿')
          )
          
          table=document.add_table(rows=1, cols=3)
          hdr_cells=table.rows[0].cells
          hdr_cells[0].text='數量'
          hdr_cells[1].text='編號'
          hdr_cells[2].text='描述'
          for qty, id, desc in records:
              row_cells=table.add_row().cells
              row_cells[0].text=str(qty)
              row_cells[1].text=id
              row_cells[2].text=desc
          
          # 添加分頁符
          document.add_page_break()
          
          # 保存文檔
          document.save('demo.docx')

          輸出:

          python-docx創建文檔功能強大,但不適用于修改文檔。

          jinja2

          Jinja2 是一個Python模板引擎,用于生成動態網頁內容。

          它允許創建包含占位符的模板,這些占位符在渲染時會被實際數據替換。

          主要功能:

          1. 動態內容生成:通過模板引擎,可以根據用戶輸入或其他數據生成HTML、XML等標記內容。
          2. HTML 轉義:自動處理特殊字符,防止 XSS 攻擊。
          3. 模板繼承:可以從基礎模板繼承并擴展,避免重復代碼,提高開發效率。

          安裝:

          pip install jinja2

          示例:

          假設要創建一個顯示購物清單的網頁,就可以使用Jinja2來動態生成包含購物項的HTML頁面。

          app.py

          from flask import Flask, render_template
          
          app=Flask(__name__)
          
          @app.route('/')
          def index():
              items=[
                  {'name': '蘋果', 'quantity': 5},
                  {'name': '香蕉', 'quantity': 3},
                  {'name': '牛奶', 'quantity': 2}
              ]
              return render_template('shopping_list.html', items=items)
          
          if __name__=='__main__':
              app.run(debug=True)

          templates/shopping_list.html

          <!DOCTYPE html>
          <html>
          <head>
              <title>購物清單</title>
          </head>
          <body>
              <h1>我的購物清單</h1>
              <ul>
                  {% for item in items %}
                  <li>{{ item.name }} - {{ item.quantity }} 個</li>
                  {% endfor %}
              </ul>
          </body>
          </html>

          在這個示例中,我們有一個 Flask 路由 /,它將一個購物項列表傳遞給模板 shopping_list.html

          模板使用 Jinja2 的循環語法 {% for item in items %} 來動態生成每個購物項的列表。

          這樣,每次訪問頁面時,都會顯示當前的購物清單。

          python-docx-template

          雖然python-docx在創建文檔方面非常強大,但它在修改現有文檔時有一定的局限性。

          python-docx-template允許用戶利用熟悉的 Word 界面創建模板文檔,并通過jinja2`的模板語法動態替換和修改內容。

          詳細文檔請參考:python-docx-template

          這個包結合了以下兩個庫:

          • python-docx:用于讀取、寫入和創建文檔
          • jinja2:用于管理模板中的標簽

          實現原理:

          1、使用Microsoft Word創建所需的文檔樣本,包括圖片、目錄、頁腳、頁眉、變量等。

          2、在文檔中插入類似 Jinja2 的標簽,并將文檔保存為.docx文件,作為模板文件。

          3、使用python-docx-template從模板和相關的上下文變量生成多個Word文檔。

          Jinja2-like 語法

          標簽用法

          • 段落: {%p jinja2_tag %}
          • 表格行: {%tr jinja2_tag %}
          • 表格列: {%tc jinja2_tag %}
          • 文本運行: {%r jinja2_tag %}

          變量顯示

          • 字符串變量: {{ <var> }}
          • 富文本變量: {{r <var> }}

          注釋

          • 段落注釋: {#p 注釋 #}
          • 表格行注釋: {#tr 注釋 #}
          • 表格列注釋: {#tc 注釋 #}

          合并與分隔文本

          • 合并: {%- if condition -%} ... {%- endif -%}
          • 分隔: 使用 ENTERSHIFT+ENTER

          轉義字符

          • 轉義符: {_%, %_}{_{, }_}

          表格

          • 橫向合并: {% colspan <var> %}
          • 縱向合并: {% hm %}{% vm %}
          • 單元格背景色: {% cellbg <var> %}

          富文本

          • 創建: RichText('text', font='font_name')
          • 添加鏈接: 使用 RichTexturl_id

          圖片

          • 插入圖片: {{ <var> }}
          • myimage = InlineImage(tpl, 'image_path.png', width=Mm(20), height=Mm(10))

          子文檔

          • 合并子文檔:
          • tpl = DocxTemplate('template.docx')
            sd = tpl.new_subdoc('subdoc.docx')

          替換

          • 圖片: tpl.replace_pic('dummy.jpg', 'new.jpg')
          • 媒體: tpl.replace_media('dummy_media.jpg', 'new_media.jpg')
          • 嵌入對象: tpl.replace_embedded('dummy.docx', 'new.docx')

          獲取未聲明變量

          tpl=DocxTemplate('template.docx')
          tpl.render(context_dict)
          set_of_variables=tpl.get_undeclared_template_variables()

          多次渲染

          • 重置: tpl.reset_replacements()

          特殊情況

          • Word 2016: 使用RichText處理空格和制表符

          自定義 Jinja 過濾器

          import jinja2
          
          def multiply_by(value, by):
              return value * by
          
          jinja_env=jinja2.Environment()
          jinja_env.filters['multiply_by']=multiply_by

          一個完整示例

          1、在 Word 中編輯模板

          2、編寫代碼

          from docxtpl import DocxTemplate, InlineImage
          import datetime as dt
          from docx2pdf import convert
          
          # 指定輸入和輸出文件名
          input_file='docs/invitation.docx'
          output_file='docs/invitation.pdf'
          
          # 創建文檔對象
          doc=DocxTemplate("inviteTmpl.docx")
          
          # 創建上下文字典
          context={
              "todayStr": dt.datetime.now().strftime("%Y年%m月%d日"), 
              "recipientName": "親愛的朋友",  
              "evntDtStr": "2024年08月09日",  
              "venueStr": "洛克大廈",  # 事件地點
              "senderName": "吳建明",  # 發送者名字
          }
          
          # 將圖片插入到上下文中
          context['bannerImg']=InlineImage(doc, 'images/AIGC.png')
          
          # 將上下文渲染到文檔對象中
          doc.render(context)
          
          # 將文檔對象保存為 Word 文件
          doc.save(input_file)
          
          # 將 DOCX 文件轉換為 PDF
          convert(input_file, output_file)

          執行時長約為 3 秒:

          3、生成效果如下:

          生成word和pdf文件,pdf內容如右下圖。2個文件格式完全一致。

          小結

          通過 python-docx、jinja2python-docx-template,我們可以高效地創建和修改Word文檔,并實現動態內容的自動生成。

          無論是生成報告、創建網頁內容,還是處理復雜的文檔模板,這些工具都能為我們的工作提供強大的支持。


          主站蜘蛛池模板: 一区二区三区在线观看视频| 国模大胆一区二区三区| 日韩精品一区二区三区不卡 | 国产一区二区精品久久91| 内射女校花一区二区三区| 无码精品一区二区三区在线| 国产熟女一区二区三区五月婷| 日本不卡免费新一区二区三区| 内射少妇一区27P| 一区二区亚洲精品精华液| 亚洲日韩激情无码一区 | 亚洲综合av一区二区三区不卡| 久久精品国产亚洲一区二区三区 | 亚洲中文字幕久久久一区| 丰满爆乳一区二区三区| 视频在线观看一区| 夜夜精品视频一区二区| 亚洲一区免费视频| 无码人妻精品一区二区三区东京热| 麻豆视传媒一区二区三区| 日韩一区二区视频在线观看| 亚洲av午夜福利精品一区人妖| 久久99国产一区二区三区| 日本视频一区二区三区| 怡红院一区二区三区| 亚洲av色香蕉一区二区三区| 色欲AV蜜臀一区二区三区| 亚洲AV无码一区东京热久久| 日韩精品人妻一区二区中文八零 | 少妇无码一区二区三区| 国产一区二区三区乱码| 国产精品乱码一区二区三区| 一区二区三区高清在线| 日韩毛片一区视频免费| 日韩一区二区三区在线观看| 国产乱子伦一区二区三区| 精品无码成人片一区二区| 国产91精品一区| 视频一区二区中文字幕| 亚洲乱码国产一区网址| 一区二区三区91|