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 ...
随机推荐
- ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...
- 【码云周刊第 32 期】程序员眼中的 Vue 与 Angular !
码云项目推荐 基于 Vue 的项目: 1.项目名称:基于 Vue.js 的 UI 组件库 项目简介:iView 是一套基于 Vue.js 的 UI 组件库,主要服务于 PC 界面的中后台产品. 项目地 ...
- 如果您想确保Windows 10在新用户登录时不安装内置应用程序,则必须删除所有配置的应用程序。
原文 如果您想确保Windows 10在新用户登录时不安装内置应用程序,则必须删除所有配置的应用程序. 本文的内容 已安装与配置的应用程序 删除配置的应用程序 安装与配置的应用程序^ 在介绍如何删除所 ...
- QT 序列化/串行化/对象持久化
本文以一个实例讲解Qt的序列化方法: Qt版本 4.8.0 Qt序列化简介 Qt采用QDataStream来实现序列化,QT针对不同的实例化对象有不同的要求.这里主要分两类,即:QT中原生的数据类型, ...
- const char*和const char[]怎么识别?
#include <iostream> using namespace std; template<typename T> class _ischararray_; templ ...
- VCL比MFC好在哪里
作者:刘国华链接:https://www.zhihu.com/question/35218485/answer/118472021来源:知乎著作权归作者所有,转载请联系作者获得授权. 从使用感受而言, ...
- C++虚函数表解析(图文并茂,非常清楚)( 任何妄图使用父类指针想调用子类中的未覆盖父类的成员函数的行为都会被编译器视为非法)good
C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的指针有“多种形态”,这是一种泛型技术 ...
- 浅谈jpa、hibernate与spring data jpa三者之间的关系
1.解释hibernate之前先了解下什么是orm,orm是object relation mapping,即对象关系映射,object可以理解成java实体类Entity,relation是关系型数 ...
- Python 爬虫从入门到进阶之路(六)
在之前的文章中我们介绍了一下 opener 应用中的 ProxyHandler 处理器(代理设置),本篇文章我们再来看一下 opener 中的 Cookie 的使用. Cookie 是指某些网站服务器 ...
- vue的checkbox或多选的select的代码例子
另外一种实现checkbox的vue绑定方法代码: 给v-model绑定一个相同的数组类型的属性: <div id="app"> <label>jack&l ...