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, , 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项目。
C#中对EXCEL保存的SAVEAS方法说明的更多相关文章
- selenium IDE中log的保存与查看方法
下载selenium IDE的log保存插件为File Logging(selenium IDE),下载安装方式如下: (1)打开firefox浏览器----点击右上角----附加组件---插件--- ...
- asp.net中导出Excel的方法
一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...
- 对.NET中导出数据到EXCEL的几种方法探讨
最近在做一个报表系统的时候,需要把DATASET中的数据导到EXCEL当中,于是在网上找了一遍,发现了好几种方法,本来以为应该差不多,但后来经过一一试用后,发现在性能上真的差别很大,现在就介绍一下,同 ...
- 浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法
Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家有所帮助. 一 插件调试不了以及错误导致崩溃的问题 在开发机器上,有时可 ...
- asp.net中导出excel数据的方法汇总
1.由dataset生成 代码如下 复制代码 public void CreateExcel(DataSet ds,string typeid,string FileName) { Htt ...
- Python中xlrd和xlwt模块使用方法 (python对excel文件的操作)
本文主要介绍可操作excel文件的xlrd.xlwt模块.其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装xlrd和xlwt模块 xlrd和xlwt模块不是 ...
- ASP.net中导出Excel的简单方法介绍
下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...
- .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)
.NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...
- JavaScript在浏览器中把文本保存为文件的方法
JavaScript在浏览器中把文本保存为文件的方法 经过测试第二种方法可以保存更多的文本不至于卡死 var saveTextAsFile1 = function (text, fileName, s ...
随机推荐
- SQLServer 复制中移除和添加发布而不初始化所有项目
原文:SQLServer 复制中移除和添加发布而不初始化所有项目 -- 若提前"禁止架构更改",新增的列不会自动添加大发布,此时应使用 sp_articlecolumn 添加列 E ...
- 解决C++项目使用sqlite中文乱码问题
我参考的是这篇文章:https://www.2cto.com/database/201411/354891.html 理论是:sqlite使用的是UTF-8,C++中用的字符串是ascii或unico ...
- Delphi7 时钟(使用了多个自定义组件)
http://download.csdn.net/detail/akof1314/3073289
- HTTP通信过程原理
HTTP协议 通信过程介绍 HTTP协议介绍 Http(Hypertext Transfer Protocol)超文本传输协议. Http是应用层协议,当你上网浏览网页的时候,浏览器和服务器之间就会通 ...
- Raknet是一个基于UDP网络传输协议的C++网络库(还有一些其它库,比如nanomsg,fastsocket等等)
Raknet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务.通常情况下用于游戏,但也可以用于其它项目. Raknet有以下好处: 高性能 在同一台计算机 ...
- 微服务之Service Fabric 系列 (一):概览、环境安装
参考 微软官方文档 service fabric 百家号 大话微服务架构之微服务框架微软ServiceFabric正式开源 一.概述 1.概念 Azure Service Fabric 是一款分 ...
- 指针与 const --- 指针常量与常量指针
注:该文主要来源于 网易公开课之<C++ 程序设计入门(上)>课件. 在 C 语言标准中,const 修饰的变量称之为 只读变量, 在 C++ 语言标准中,const 修饰的变量称之为 常 ...
- C# ACCESS 修改表记录提示"UPDATE 语句语法错"问题
错误的sql 语句如下: sqlStr = "update tb_userInfo set passWord='" + pw + "' where userName=' ...
- WebP 极限压缩及ios实现
WebP 极限压缩及ios实现 Levi.duan 会议提纲 概念以及定义 什么是Webp ? WebP (发音 weppy ),是一种同时提供了有损压缩与无损压缩的图片文件格式,是Google新 ...
- 30211Java_类
类 类:我们叫做class. 对象:叫做Object,instance(实例).某个类的对象,某个类的实例.是一样的意思.1.对象是具体的事物;类是对对象的抽象;2.类可以看成一类对象的模板,对象可以 ...