zoukankan      html  css  js  c++  java
  • 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         }
  • 相关阅读:
    对在Qtopia中添加国际化支持一文补充
    在Redhat中添加微软雅黑字体
    QGridLayout中multi cell处理
    QScrollArea处理与显示问题
    升级ubuntu后EMACS 无法使用
    在Qtopia中添加国际化支持
    Delphi面向对象编程的20条规则
    Spring AOP 实例
    使用Dynamic LINQ实现Ext Grid的远程排序
    高效实现数据仓库的七个步骤
  • 原文地址:https://www.cnblogs.com/healer007/p/13808997.html
Copyright © 2011-2022 走看看