zoukankan      html  css  js  c++  java
  • C#中对EXCEL保存的SAVEAS方法说明

    这两天做的导出报表的项目中,因为出现了一些问题所以对于excel一些方法参数有了一些认识,

    首先:开始生成的是.xls格式的excel文件,但是某个sheet发现我本来dataTable的数据有8万多行,但是sheet显示只有65536行,查阅后发现Excel2007以下版本支持的sheet的最大行数就是65536。

    Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。
    Excel2003的最大列数是256列,2007以上版本是16384列。

    有的小伙伴建议:创建一个新的sheet. 
    然后在循环导数据里加一个计数器,到65535就创建一个sheet,创建后置计数器为0.继续导入.

    参见:http://bbs.csdn.net/topics/250005454

    但是更简便的方案:如果本机服务器安装office系统是2007以上,如office2013,则完全可以生成支持最大行数1,048,576的2007版本excel,后缀名为.xlsx

    以下是经验总结:

    xbook.SaveAs(strFile, Type.Missing, "", "", Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, 1, false, Type.Missing, Type.Missing, Type.Missing);

    代码;

    Application xApp = new Application();
                xApp.DisplayAlerts = false;
                xApp.Visible = true;//让后台执行设置为不可见,为true的话会打开excel看到数据在往里面写
                Workbook xbook;
                //xbook = xApp.Workbooks.Open(strFile, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                xbook = xApp.Workbooks.Add(Missing.Value);//添加一个工作薄采用缺省参数,会自动添加一个默认模板的工作表Sheet1
    
                //xApp.DisplayAlerts = false; //如果想删除某个sheet页,首先要将此项设为fasle,,因工作薄内至少含有一张可视工作表,现不可删除
                //(xApp.ActiveWorkbook.Sheets[1] as Worksheet).Delete();
    
                string FileDate;
                IT_Check_Report.Create(ref xbook, ref xApp, out FileDate);
                string strFile = strFilePath + "IT_Check_Report_Sheet" + FileDate + ".xlsx";
    
                //int FormatNum;
                //string Version = xApp.Version;//获取excel版本
                //if (Convert.ToDouble(Version) < 12)
                //{
                //    FormatNum = -4243;//excel97-2003
                //}
                //else
                //{
                //    FormatNum = 56;//excel2007 or later
                //}
                //xbook.SaveAs(strFile, FormatNum, "", "", Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, 1, false, Type.Missing, Type.Missing, Type.Missing);
                //xbook.SaveAs(strFile, XlFileFormat.xlWorkbookNormal, "", "", Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, 1, false, Type.Missing, Type.Missing, Type.Missing);
                //以下第二个参数是使用Type.Missing,即输出系统中带有的excel支持的格式
                xbook.SaveAs(strFile, Type.Missing, "", "", Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, 1, false, Type.Missing, Type.Missing, Type.Missing);
                //xbook.Save();
                xbook.Close(false, Missing.Value, Missing.Value);
                xbook = null;
    
                xApp.Quit();
                xApp = null;
                GC.Collect();

     SAVEAS方法 :  第二个参数使用xlWorkbookNormal则输出的是xls格式,如果使用的是missing则输出系统中带有的EXCEL支持的格式

    即:如果使用xlWorkbookNormal参数,但是后缀名是.xlsx,则不能打开文件,

    详解:

    expression.SaveAs(FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended,CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)       

    expression   必需。该表达式返回上述对象中一个对象。

    Filename    Variant类型,可选。该字符串表示要保存的文件名。可包含完整路径。如果不指定路径,Microsoft Exce 将文件保存到当前文件夹中。  

    FileFormat  Variant 类型,可选。保存文件时使用的文件格式。要得到有效选项的列表,请参阅   FileFormat   属性。对于已有文件,其默认格式是上次指定的文件格式;对于新文件,默认格式为当前使用的   Excel   版本格式。

    Password  Variant 类型,可选。它是一个区分大小写的字符串(最长不超过15个字符),用于指定文件的保护密码。

    WriteResPassword  Variant类型,可选。该字符串表示文件的写保护密码。如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读方式打开。

    ReadOnlyRecommended  Variant类型,可选。如果该值为True,则在打开文件时显示一条信息,提示该文件以只读方式打开。

    CreateBackup  Variant类型,可选。如果该值为True,则创建备份文件。 

    AccessMode   XlSaveAsAccessMode类型,可选。
            XlSaveAsAccessMode   可为以下 XlSaveAsAccessMode 常量之一。
            xlExclusive     (不含方式)
            xlNoChange   default     (不更改访问方式)
            xlShared     (共享列表)   
            如果省略此参数,则不会更改访问方式。如果在没有改变文件名的情况下保存共享列表,则可以忽略参数。若要改变访问方式,请使用   ExclusiveAccess   方法。  

    ConflictResolution  XlSaveConflictResolution   类型,可选。 
          XlSaveConflictResolution   可为以下   XlSaveConflictResolution   常量之一。
          xlUserResolution     (显示冲突解决方案对话框)
          xlLocalSessionChanges   (自动接受本地用户的修改)
          xlOtherSessionChanges     (接受除本地用户之外的其他用户的更改)
            如果忽略本参数,则显示冲突处理对话框。

    AddToMru  Variant 类型,可选。如果该值为True,则将该工作簿添加到最近使用的文件列表中。默认值为False。     

    TextCodePage   Variant类型,可选。不在美国英语版的Microsoft Excel中使用。    

    TextVisualLayout Variant类型,可选。不在美国英语版的Microsoft Excel中使用。

     Local       Variant  类型,可选。如果该值为True,则以Microsoft Excel(包括控制面板设置)的语言保存文件。如果该值为False(默认值),则以Visual Basic for Applications (VBA) 的语言保存文件,其中   Visual Basic for Applications(VBA)为典型安装的美国英语版本,除非VBA 项目中的Workbooks.Open来自旧的国际化的XL5/95 VBA项目。

  • 相关阅读:
    AX 2009 实现对display 方法过滤
    AX 2009实现数据验证方法
    AX 2009 实现outlook发送邮件并带多个附件
    AX 2009 销售订单导入导出
    Mixin技术与分布类编程
    关于python装饰器的总结
    作为软件工程师,你必须知道的20个常识
    Python装饰器基础语法总结
    如何成为一名黑客(转)
    python的对象和类
  • 原文地址:https://www.cnblogs.com/ammy714926/p/4894994.html
Copyright © 2011-2022 走看看