将excel根据列名称拆分成多个文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将excel根据列名称拆分成多个文件相关的知识,希望对你有一定的参考价值。

excel文件第一列是标准值,每一列代表一个个体的所有指标,想拆分出每个个体的表格,并且包含标准值列。例如下图,拆分后的文件只包含标准值列和个体列,比如,小红.xlsx 包含A列和小红列;小黄.xlsx包含A列和小黄列;以此类推。。。感谢高手

   第一步,选择要拆分的文件

   第二步,跳过表头

   第三步,填入按那列拆分

  点击 拆分生成新文件

参考技术A 如果真的需要分成几十个文件,可以试用一个工具“ Excel Data Helper(Excel数据助手)”,用它的拆分功能,但拆分前,要添加一列作为拆分条件,该列即为即将保存的文件名。

C#将一个excel工作表根据指定范围拆分为多个excel文件

C#将一个excel工作表根据指定范围拆分为多个excel文件

微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其他方法如VBA及Visual Studio语言(如C#、VB.NET等)编程的方式。VBA我不是很熟悉,因此这篇文章写的是如何使用C# 将一个excel工作表根据指定的范围拆分为多个excel文件。

下面是一个excel人力资源信息表,里面含有三个部门及一些员工信息:

技术分享                     

接下来就开始拆分这个excel工作表了,在这个示例中,我将这个表格拆分为三个单独的excel文件,每个excel文件是一个部门的信息。

详细步骤:

使用命名空间:

新建一个visual C#项目,添加引用并使用如下命名空间:

using Spire.Xls;

 

步骤1创建一个Workbook类的对象,加载源excel文件并获取文件中待拆分的工作表,在该示例中是第一个工作表。

Workbook bookOriginal = new Workbook();
bookOriginal.LoadFromFile("信息表.xlsx");
Worksheet sheet = bookOriginal.Worksheets[0];

 

步骤2创建一个新的Workbook对象newBook1,并给它添加一个空的工作表。

Workbook newBook1 = new Workbook();
newBook1.CreateEmptySheets(1);

 

步骤3获取newBook1的第一个工作表,然后获取源excel工作表中第二行至第八行(销售部)的数据,将它们复制到newBook1的第一个工作表。

Worksheet newSheet1 = newBook1.Worksheets[0];
CellRange range1 = sheet.Range[2, 1, 8, sheet.LastColumn];
newSheet1.Copy(range1, newSheet1.Range[1, 1]);

 

步骤4重复步骤2和步骤3,创建一个新的Workbook对象newbook2,获取源excel工作表中的第九行至第十五行(人力资源部)的数据并将它们复制到newbook2。

Workbook newBook2 = new Workbook();
newBook2.CreateEmptySheets(1);
Worksheet newSheet2 = newBook2.Worksheets[0];
CellRange range2 = sheet.Range[9, 1, 15, sheet.LastColumn];
newSheet2.Copy(range2, newSheet2.Range[1, 1]);

 

步骤5删除源excel文件中第二行到第十五行的数据,剩下行(研发部)的数据将被保存为另一个新的excel文件。注意这里的14代表的不是行号而是行数。

sheet.DeleteRow(2, 14);

 

步骤6保存这三个excel文件并以部门的名字命名。

newBook1.SaveToFile("销售部.xlsx", ExcelVersion.Version2007);
newBook2.SaveToFile("人力资源部.xlsx", ExcelVersion.Version2007);
bookOriginal.SaveToFile("研发部.xlsx", ExcelVersion.Version2007);

 

效果图:

技术分享 

 

全部代码:

using Spire.Xls;

namespace splitworksheet
{
    class Program
    {
        static void Main(string[] args)
        {
            Workbook bookOriginal = new Workbook();
            bookOriginal.LoadFromFile("信息表.xlsx");
            Worksheet sheet = bookOriginal.Worksheets[0];
            Workbook newBook1 = new Workbook();
            newBook1.CreateEmptySheets(1);
            Worksheet newSheet1 = newBook1.Worksheets[0];
            CellRange range1 = sheet.Range[2, 1, 8, sheet.LastColumn];

            newSheet1.Copy(range1, newSheet1.Range[1, 1]);

            Workbook newBook2 = new Workbook();
            newBook2.CreateEmptySheets(1);
            Worksheet newSheet2 = newBook2.Worksheets[0];
            CellRange range2 = sheet.Range[9, 1, 15, sheet.LastColumn];
            newSheet2.Copy(range2, newSheet2.Range[1, 1]);

            sheet.DeleteRow(2, 14);
            newBook1.SaveToFile("销售部.xlsx", ExcelVersion.Version2007);
            newBook2.SaveToFile("人力资源部.xlsx", ExcelVersion.Version2007);
            bookOriginal.SaveToFile("研发部.xlsx", ExcelVersion.Version2007);
        }
    }
}

 

总结:

在上面的示例中我使用的是Free Spire.XLS,拆分excel文件是根据指定部门所在的行的范围,除此之外也可以根据部门的名字来拆分,与检索数据并导出到新的excel文档类似,我在之前的文章中已经写过了,如有需要可以参考。

感谢您的观看!

以上是关于将excel根据列名称拆分成多个文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将1个excel文件中的100个工作表拆分成独立的excel文件

如何把excel的多个sheet拆分成多个excel文件

VBA代码根据列的内容将excel文件拆分为多个工作簿?

为给定文件夹中的多个工作簿分配密码

excel表格 按行数 或者其他文字拆分为多个文件

怎么根据名称找到对应的编号呢?