精华内容
下载资源
问答
  • 在以前的文章中,我分享了如何使用免费控件将word表格中的数据导入到excel中,在本篇文章中我将介绍如何将Excel表格复制到Word表格中,并同时保留原Excel表格格式

    C# 如何将Excel表格复制到Word中并保留格式

    在以前的文章中,我分享了如何使用免费控件将word表格中的数据导入到excel中,在本篇文章中我将介绍如何将Excel表格复制到Word表格中,并同时保留原Excel表格的格式。

    这里我们需要使用到一个组件,叫做Spire.Office。它是一个企业级的Office组件,包含了Spire.Doc, Spire XLS, Spire.Spreadsheet,  Spire.Presentation, Spire.PDF, Spire.DataExport, Spire.OfficeViewer, Spire.PDFViewer, Spire.DocViewer和Spire.BarCode等组件,使用它我们可以实现在.NET应用程序中查看、操作、转换及打印Office文档,PDF文档,创建Barcode以及数据导入导出等工作。这里我们需要使用到的是其中的Spire.Doc和Spire.XLS组件。

    首先,下载并安装Spire.Office,然后打开Visual Studio,创建项目并引用Spire.Doc.dll和Spire.Xls.dll。以下是我们需要用到的命名空间:

    using Spire.Doc;
    using Spire.Doc.Documents;
    using Spire.Doc.Fields;
    using Spire.Xls;

    详细步骤如下:

    步骤1:从系统加载Excel文件并获取它的第一个工作表。

    Workbook workbook = new Workbook();
    workbook.LoadFromFile("DatatableSample.xlsx");
    Worksheet sheet = workbook.Worksheets[0];
    步骤2:创建一个新的Word文档,添加一个表格并设置它的行列数与Excel表格中的行列数一致。

    Document doc = new Document();
    //添加表格
    Table table = doc.AddSection().AddTable(true);
    //设置行列数
    table.ResetCells(sheet.LastRow, sheet.LastColumn);
    步骤3:将Excel表格中的数据写入到word表格里,并调用自定义的方法CopyStyle()将Excel表格中的格式复制到word表格。

    for (int r = 1; r <=sheet.LastRow; r++)
    {
        for (int c = 1; c <= sheet.LastColumn; c++)
        {
           CellRange xCell =sheet.Range[r, c];
           TableCell wCell =table.Rows[r - 1].Cells[c - 1];
           //将数据写入到word表格
           TextRange textRange =wCell.AddParagraph().AppendText(xCell.NumberText);
           //复制格式到word表格
            CopyStyle(textRange,xCell, wCell);
        }
    }
    自定义的方法CopyStyle(TextRange wTextRange,CellRangexCell,TableCell wCell)如下:

    参数:

    wTextRange: Word表格中的文本

     xCell: Excel表格中的单元格

    wCell: Word表格中的单元格

    private static void CopyStyle(TextRangewTextRange, CellRange xCell, TableCell wCell)
    {
       //复制字体格式
        wTextRange.CharacterFormat.TextColor= xCell.Style.Font.Color;
        wTextRange.CharacterFormat.FontSize= (float)xCell.Style.Font.Size;
        wTextRange.CharacterFormat.FontName= xCell.Style.Font.FontName;
        wTextRange.CharacterFormat.Bold= xCell.Style.Font.IsBold;
        wTextRange.CharacterFormat.Italic= xCell.Style.Font.IsItalic;
       //复制背景颜色
        wCell.CellFormat.BackColor= xCell.Style.Color;
       //复制文本排列方式
        switch(xCell.HorizontalAlignment)
        {
           case HorizontalAlignType.Left:
                wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Left;
               break;
           case HorizontalAlignType.Center:
                wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Center;
               break;
           case HorizontalAlignType.Right:
                wTextRange.OwnerParagraph.Format.HorizontalAlignment= HorizontalAlignment.Right;
               break;
        }
    }

    步骤4:保存文档。

    doc.SaveToFile("result.docx",Spire.Doc.FileFormat.Docx);
    运行结果:



    完整代码:

    using Spire.Doc;
    using Spire.Doc.Documents;
    using Spire.Doc.Fields;
    using Spire.Xls;
     
    namespace 复制Excel表格到Word并保留格式
    {
        class Program
        {
            static void Main(string[] args)
            {
                //加载Excel文档
                Workbook workbook = newWorkbook();
                workbook.LoadFromFile("DatatableSample.xlsx");
                Worksheet sheet = workbook.Worksheets[0];
                //创建一个新的word文档
                Document doc = newDocument();
                //添加一个表格到word文档
                Table table = doc.AddSection().AddTable(true);
                //设置word表格的行列数
               table.ResetCells(sheet.LastRow, sheet.LastColumn);
                for (int r = 1; r<= sheet.LastRow; r++)
                {
                   for (intc = 1; c <= sheet.LastColumn; c++)
                   {
                       CellRange xCell = sheet.Range[r, c];
                       TableCell wCell = table.Rows[r -1].Cells[c - 1];
                       //将Excel表格中的数据写入到word表格
                        TextRangetextRange = wCell.AddParagraph().AppendText(xCell.NumberText);
                       //将Excel表格中的格式复制到word表格
                       CopyStyle(textRange, xCell, wCell);
                   }
                }
                //设置word表格的列宽
                for (int i = 0; i< table.Rows.Count; i++)
                {
                   for (intj = 0; j < table.Rows[i].Cells.Count; j++)
                   {
                       table.Rows[i].Cells[j].Width = 60f;
                    }
                }
                //保存文档并打开
               doc.SaveToFile("result.docx",Spire.Doc.FileFormat.Docx);
               System.Diagnostics.Process.Start("result.docx");
            }
            private static void CopyStyle(TextRangewTextRange, CellRange xCell, TableCell wCell)
            {
                //复制Excel单元格的字体格式到word表格
               wTextRange.CharacterFormat.TextColor = xCell.Style.Font.Color;
               wTextRange.CharacterFormat.FontSize = (float)xCell.Style.Font.Size;
               wTextRange.CharacterFormat.FontName = xCell.Style.Font.FontName;
               wTextRange.CharacterFormat.Bold = xCell.Style.Font.IsBold;
               wTextRange.CharacterFormat.Italic = xCell.Style.Font.IsItalic;
                //复制Excel单元格的背景颜色到word表格
                wCell.CellFormat.BackColor =xCell.Style.Color;
                //复制Excel单元格的字体排列方式到word表格
                switch (xCell.HorizontalAlignment)
                {
                   case HorizontalAlignType.Left:
                       wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Left;
                       break;
                   case HorizontalAlignType.Center:
                       wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center;
                       break;
                   case HorizontalAlignType.Right:
                       wTextRange.OwnerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Right;
                       break;
                }
            }
        }
    }


     

     

     

    展开全文
  • 如何复制Excel表格保持格式及列宽不变 == excel 粘贴的时候,经常格式就乱了,我们想要保持原来的样式。 有的之后粘贴后,右下角有个 图标 可以选择 保留格式。从而保持原来样子。 但是有的时候就没有。 这个...

    excel 复制 格式不变_

    如何复制Excel表格保持格式及列宽不变

    ==

    excel 粘贴的时候,经常格式就乱了,我们想要保持原来的样式。

    有的之后粘贴后,右下角有个 图标 可以选择 保留原格式。从而保持原来样子。

    但是有的时候就没有。 这个时候就不好办了。

     

    粘贴的时候列宽常常会不对,会变得很挤。这个可以通过 菜单 工具栏 中的“格式”里选择自动调整列宽来修整。

     

    展开全文
  • python openpyxl 带格式复制表格

    千次阅读 2020-03-27 21:52:59
    有合并单元格的,先把合并单元格复制过去, 合并单元格用wm=list(zip(wbsheet....再用.has_style: #拷贝格式 测试是否有格式,再复制格式和数据 其中: font(字体类):字号、字体颜色、下划线等 fill(填充类):...

    有合并单元格的,先把合并单元格复制过去,
    合并单元格用wm=list(zip(wbsheet.merged_cells))得出合并单元格列表,把其中的(<CellRange A1:A4>,) 替换成为A1:A4格式
    再从新表中合并单元格

    再用.has_style: #拷贝格式 测试是否有格式,再复制格式和数据
    其中:
    font(字体类):字号、字体颜色、下划线等
    fill(填充类):颜色等
    border(边框类):设置单元格边框
    alignment(位置类):对齐方式
    number_format(格式类):数据格式
    protection(保护类):写保护

    import os							#找文件目录
    import win32com.client as win32  	#操作excel文件
    from tqdm import tqdm 				#进度条显示
    from openpyxl import load_workbook # 读取时导入这个
    from openpyxl.styles import Font, Alignment  #设置单元格格式
    from openpyxl.utils import get_column_letter, column_index_from_string
    from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
    from copy import copy
    
    path=input('输入整理前原始路径:  ')
    if path=="":
    	path=os.getcwd()
    
    xlsx_lists=[]
    xls_lists=[]
    for file in os.listdir(path):
        filename=os.path.join(path,file)
        if os.path.isfile(filename):             #是目录
            if filename.endswith(".xls"):
            	xls_lists.append(filename)
            if filename.endswith(".xlsx"):
            	xlsx_lists.append(filename)
    source_file='原始数据.xlsx'
    if os.path.exists(os.path.join(os.getcwd(),source_file)):
    	os.remove(os.path.join(os.getcwd(),source_file))
    choose="1"
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    # while choose not in "1|2":
    #     choose =input("xls转为xlsx:1  xlsx转为xls:2  ")
    if choose=="1":
    	with tqdm(total=len(xls_lists),desc='写文件数 ',leave=True,unit='个',unit_scale=True,mininterval=0.5,bar_format=None) as pbar:
    		for xls_list in xls_lists:
    			pbar.update(1)
    			wb = excel.Workbooks.Open(xls_list)
    			wb.SaveAs(xls_list+"x", FileFormat = 51)    #FileFormat = 51 is for .xlsx extension
    			wb.Close()                               #FileFormat = 56 is for .xls extension
    		pbar.close()
    else:
    	with tqdm(total=len(xls_lists),desc='写文件数 ',leave=True,unit='个',unit_scale=True,mininterval=0.5,bar_format=None) as pbar:
    		for xlsx_list in xlsx_lists:
    			pbar.update(1)
    			wb = excel.Workbooks.Open(xlsx_list)
    			wb.SaveAs(xlsx_list[0:len(xlsx_list)-1], FileFormat = 56)    #FileFormat = 51 is for .xlsx extension
    			wb.Close()   
    		pbar.close()
    excel.Application.Quit()
    
    tag_file='拆分后表.xlsx'
    totaldata=pd.DataFrame()
    writer=pd.ExcelWriter(tag_file)
    totaldata.to_excel(writer, 'sheet')
    writer.save()
    
    book = load_workbook(tag_file)          #能写入已存在表中
    
    
    wb = load_workbook('原始数据.xlsx')
    for sheet in  wb.sheetnames:
    	print(sheet)
    	wbsheet=wb[sheet]
    	for num in range(3):
    		name=wbsheet.cell(1,num*15+10).value
    		wbsheet_new = book.create_sheet(name,0)
    		wm=list(wbsheet.merged_cells)   #开始处理合并单元格形式为“(<CellRange A1:A4>,),替换掉(<CellRange 和 >,)' 找到合并单元格
    		#print (list(wm))
    		if len(wm)>0 :
    			for i in range(0,len(wm)):
    				cell2=str(wm[i]).replace('(<CellRange ','').replace('>,)','')
    				#print("MergeCell : %s" % cell2)
    				wbsheet_new.merge_cells(cell2)
    		for rows in range(40):
    			wbsheet_new.row_dimensions[rows+1].height = wbsheet.row_dimensions[rows+1].height 
    			for col in range(14):
    				wbsheet_new.column_dimensions[get_column_letter(col+1)].width = wbsheet.column_dimensions[get_column_letter(col+1)].width
    				wbsheet_new.cell(row=rows+1,column=col+1,value=wbsheet.cell(rows+1,num*15+col+1).value)
    				if wbsheet.cell(rows+1,num*15+col+1).has_style:	#拷贝格式
    					wbsheet_new.cell(row=rows+1,column=col+1).font = copy(wbsheet.cell(rows+1,num*15+col+1).font)
    					wbsheet_new.cell(row=rows+1,column=col+1).border = copy(wbsheet.cell(rows+1,num*15+col+1).border)
    					wbsheet_new.cell(row=rows+1,column=col+1).fill = copy(wbsheet.cell(rows+1,num*15+col+1).fill)
    					wbsheet_new.cell(row=rows+1,column=col+1).number_format = copy(wbsheet.cell(rows+1,num*15+col+1).number_format)
    					wbsheet_new.cell(row=rows+1,column=col+1).protection = copy(wbsheet.cell(rows+1,num*15+col+1).protection)
    					wbsheet_new.cell(row=rows+1,column=col+1).alignment = copy(wbsheet.cell(rows+1,num*15+col+1).alignment)
    wb.close()
    book.save('拆分后表.xlsx')
    book.close()
    

    上例中,因为要把一个表拆分为三个,所以要循环三次

    展开全文
  • 在excel中,我做了半张纸的表格,想按照原来的格式复制到下面的半张纸上,也就是说在同一张工作表中要复制若干个相同格式表格,怎么做呢? 解决方法:按住左边的行号往下选择,把你所要复制的内容都选上,然后再到...

       在excel中,我做了半张纸的表格,想按照原来的格式复制到下面的半张纸上,也就是说在同一张工作表中要复制若干个相同格式的表格,怎么做呢?

       解决方法:按住左边的行号往下选择,把你所要复制的内容都选上,然后再到你想要粘贴的地方粘贴就可以了。。。

    展开全文
  • 这里的「复制格式」不仅可以复制文字格式,就连表格的粗细、颜色等样式也可以一并拷贝,对于 Numbers 操作是非常实用的功能,小编就教大家复制表格格式及复制格式的快捷键。 Numbers 复制格式的方法 以下举例如何...
  • 1.首先可以用 python将数据存到csv文件中 2.excel另存为 然后选择表格中对应的区域 word中打开后 在复制到需要这个表格的word文件的对应位置
  • xlwings 如何带格式复制表格内容

    千次阅读 2020-04-02 16:18:16
    print('rename', sheetname) shtcopy.name = sheetname # 这个是要用的sheet smmary_wb.save() smmary_wb.close() 代码如上所示, 没有太弄明白api.Copy的作用,执行这句之后,会出一个复制了原模板完整内容新的...
  • Word复制表格样式变化问题

    千次阅读 2019-02-22 10:22:16
     图1 ——复制表格 在word的空白处粘贴,样式变化,毫无规律可言…如图2。  图2——粘贴,样式变化 二.解决方法 2.1)复制的时候要连上下回车都复制一个,如图3。  图3——上下回车都需要复制 2.2) 在空白粘贴...
  • 1.直接复制到word,然后根据页面视图、阅读视图、web版式视图,对表格进行缩短
  • 使用textarea能粘贴的时候保留格式。 使用input粘贴的时候格式会丢失。 const input = document.createElement('textarea'); document.body.appendChild(input); input.value = “复制我呀”; // input....
  • 解决办法:点击表格属性,将自动重调尺寸的勾去掉,他就不会和你正文格式一样了
  • 很多时候我们用一些管理系统的时候,发布新闻、公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来。减少排版复杂的工作量。...此时 点击右上角编辑,Ctrl+A复制所有内容
  • python xlutils复制表格使用方法

    千次阅读 2019-05-07 23:08:00
    Ture,读取workbook并保留格式 2. xlrd.open_workbook(on_demand=): 当on_demand= True,只有被要求时才将worksheet载入内存,读取大文件时使用 3 . xlwt.Worksheet.flush_row_data(): 减少内存占用,被刷新的行不...
  • 问题:将word1中的表格复制到word2中,表格出现变形。 解决办法:1.先选中word1中的表格,然后选择复制;  2.在word2中粘贴刚才复制表格;  3.选中word1中的表格,在选中格式刷;  4.再word2中将表格格式...
  • 那么,当我们要进行复制粘贴时,如何保证粘贴的数据保留原有的格式(包括行高列宽都不能变)。 笔者以一个模板设计为例进行说明。 模板表如图1 所示。 图1 根据模板表生成表格的效果如图2所示。 图2 使用Copy方法...
  • excel2019复制表格数据到confluence的表格中,内容变成图片问题展示原因分析解决方案1.将内容复制到word中,右键粘贴-使用目标格式2.将word中的内容复制到confluence中,问题解决3.![在这里插入图片描述]...
  • 如下边两幅图,下图是复制上图的表格格式明显出现差异。 解决方法:粘贴后,单元格右下角会出现一个“粘贴选项”图标。点击图标右侧下拉箭头,会弹出一个快捷菜单,选择“保留源列宽”即可。
  • from openpyxl import load_workbook def copy_excel(totle_excel,totle_sheetname...说明:以上代码可以将格式以及合并单元格的样式均复制到另一张表 注意:如果你是跨excel文件的复制且带有公式,不建议使用
  • openpyxl 添加数据的时候不需要复制表格,这点尤为方便。  下面是在表格末尾添加数据,由于添加的数据已没有原本的单元格样式,所以需要设置他的单元格样式与上文保持一致。  pandas 如何获取所需数据的索引...
  • 问题描述       很多时候,我们在Typora写好的文章,当...Ctrl + V 粘贴到CSDN文章编辑页,格式就同样保留了下来: 自定义规则:不能有变量为keafmd的String类型的变量 String keaf
  • 目标:从PPT中复制右侧的表格,仅保留数据,去掉背景色,去掉双线等格式 选中该表格复制到word或者wps中,样式如下   选中表格表格样式-选择-最佳匹配-无样式网格型,得到 此时背景色已经...
  • 封装组件 <template> <div class="tinymce-editor"> <textarea :id="id" v-model="Value"></textarea> </div> </template>...import '../../../public/...
  • 在使用pandas读取excel表格时,无法读取表格格式,因此经过处理的数据无法按原格式输出,而使用xlwt库可以解决此问题。...#参数说明:path:读取文件路径 formatting_info=True:保留格式 fileAll = xlrd.open_wo
  • 但是在表格中经常会复制格式不正确。那么大家有没有去研究一下怎样才能复制出原有的数据格式呢?今天小编来教大家几种Excel表格复制粘贴的技巧。 No.1复制可见数据 当我们在复制数据的时候,稍不注意的话,也会将...
  • Sub copygrid() '复制表格  Dim i&, t&  t = ActiveSheet.[a65536].End(xlUp).Row  For i = 1 To t  If ActiveSheet.Range("b" & i).MergeCells = True And ActiveSheet.Range("a" & i)  Sheets(6).Ra
  • 两种表格: 1. 1 2 3 4 5 6 A B C D E F 7 8 9 10 11 12 G H I J K L ...有没有方法用vba将表格去除,按照以下格式保留文本? 1.A 2.B 3.C 4.D 5.E 6.F 7.G 8.H 9.I 10.J 11.K 12.L
  • RTF格式文本以前很少接触过,因工作原因,需要向richedit控件插入表格。 从度娘上搜索了一些基本内容,下了RTF规范,也没有仔细研究。对于一些简单的表格,可以采用“逆向...表格内容及基本格式保留了下来,这才是我
  • 仅修改文字,保留原来的格式 from docx import Document file = '测试.docx' document = Document(file) document.tables[0].cell(0, 2).paragraphs[0].runs[0].text \ = '仅修改文字,保留原来的格式' 使用以上操作...
  • kindeditor 复制粘贴 去除格式 设置

    千次阅读 2016-11-05 11:52:41
    pasteType : 1, //粘贴 没格式 allowPreviewEmoticons : false, allowImageRemote:false, //网络图片关闭 allowImageUpload : true, //本地图片开启 afterBlur:function(){this.sync(); }, //失去...
  • 怎么将PDF转换成Excel相信很多人都比较熟悉,使用的方法也很多了,但是经常会有人遇到转换后的表格要么没有图片了,要么变成很多工作表,要怎样才能让转换后的表格跟原PDF文档一样呢? 工具一: 可能有些小伙伴平时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,758
精华内容 10,303
关键字:

复制表格如何保留格式