C#:利用Spire.Xls拆分Excel的Sheet页

当大家用Excel处理大批量数据时,可能会遇到需要拆分一个Sheet页为多个Excel或者多个Sheet页的情况。

下面提供一个本人使用Spire.Xls组件拆分Excel指定Sheet页的案例。

代码中需要指定你需要拆分的区域,如有需要,可以提前计算好,然后循环调用,即可以将指定Sheet拆分为多个Excel文件。

 1  /// <summary>
 2         /// 拆分Sheet页
 3         /// </summary>
 4         /// <param name="fileName">文件名称</param>
 5         /// <param name="sheetIndex">sheet索引,从0开始</param>
 6         /// <param name="rangeStr">拆分起始区域</param>
 7         private static string SplitSheetColumns(string fileName, int sheetIndex, string rangeStr)
 8         {
 9             string BasePath = System.Windows.Forms.Application.StartupPath;
10             string saveFile = string.Empty;
11 
12             using (Spire.Xls.Workbook bookReourse = new Spire.Xls.Workbook())
13             {
14                 bookReourse.LoadFromFile(fileName);
15                 Spire.Xls.Worksheet sheetSourse = bookReourse.Worksheets[sheetIndex];
16 
17                 int totalRowCount = sheetSourse.Rows.Count();
18                 using (Spire.Xls.Workbook newBook = new Spire.Xls.Workbook())
19                 {
20                     newBook.LoadFromFile(BasePath + "\\Templates\\XXX_Tmplate_New.xls");  //这里需要提供一个空模板,以便拆分后进行填充,或者带列头的模板的也可以。
21 
22                     Spire.Xls.Worksheet newSheet1 = newBook.Worksheets[0];
23 
24                     CellRange range2 = sheetSourse.Range[rangeStr];
25 
26                     //foreach (var item in range2)
27                     //{
28                     //    if (String.IsNullOrWhiteSpace(item.Value.ToString()))
29                     //    {
30                     //        item.Value = "0";   //如果有空值就转换为0
31                     //    }
32                     //}
33 
34                     //这里指定需要读取原Excel文件的区域,例如:A1:B3
35                     sheetSourse.Copy(range2, newSheet1.Range["A3:IU" + totalRowCount]);
36 
37                     //得到新的临时文件名
38                     string tmpName = "new_" + DateTime.Now.ToString("hhmmss") + ".xlsx";
39 
40                     if (!Directory.Exists(BasePath + "\\TempExcelFile"))
41                     {
42                         Directory.CreateDirectory(BasePath + "\\TempExcelFile");
43                     }
44 
45                     saveFile = BasePath + "\\TempExcelFile\\" + tmpName;
46 
47                     if (File.Exists(saveFile)) File.Delete(saveFile);
48 
49                     //保存Excel
50                     newBook.SaveToFile(saveFile, Spire.Xls.ExcelVersion.Version2010);
51                 }
52             }
53             return saveFile;
54         }
posted @ 2020-10-13 15:14  Healer2047  阅读(967)  评论(1编辑  收藏  举报