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文檔類似,我在之前的文章中已經寫過了,如有需要可以參考。

感謝您的觀看!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM