在实际开发过程中,有时候服务器端没安装OFFICE,你和服务器管理员去商量安装个OFFICE的时候,管理员很倔犟的不给你安装的时候,这个时候就可以考虑我这个方法是实现导出EXCEL了。如果你导出的EXCEL是OFFICE2003的版本,可以选择其它的方式实现了,如果是OFFICE 2003之后的版本,就选择这个比较好,如果大伙有更好的方法,可以提出来一起研究学习下。

  第一步:在服务器上放一个空白的EXCEL文件,里面什么都没有,可以在你本机建好这个文件,然后将这个文件放到服务器上。

          如图1:

第二步:调用复制文件的方法,将【如图1】的文件复制一份新的文件,文件名自己取,只要唯一就可以。

  第三步:在第二步中复制出的文件中调用如下的方法建立列:

     按照你的实际需求可以修改下面的这个方法的实现方式,下面只是一个参考作用。

 public static void ToExcel(string strPath, string strSheetName)
{
System.Data.OleDb.OleDbConnection OleDb_Conn = new System.Data.OleDb.OleDbConnection();
// OleDb_Conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=No';" + "Data Source=\"" + strPath + "\"";
OleDb_Conn.ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=0\"", strPath);
try
{
OleDb_Conn.Open();
System.Data.OleDb.OleDbCommand OleDb_Comm = new System.Data.OleDb.OleDbCommand();
OleDb_Comm.Connection = OleDb_Conn;
string strCmd;
try
{
strCmd = "drop table [" + strSheetName + "]";
OleDb_Comm.CommandText = strCmd;
OleDb_Comm.ExecuteNonQuery();
}
catch
{ }
strCmd = "create Table [" + strSheetName + "]("; //foreach (DataColumn dc in dtSource.Columns)
//{
strCmd += "[集] TEXT,"; //此处 TEXT 是为了 防止导出数据的长度大于255而导出异常
strCmd += "[场] TEXT,";
strCmd += "[镜头] TEXT,";
strCmd += "[帧数] TEXT,";
strCmd += "[制作人] TEXT,";
strCmd += "[难度系数] TEXT,";
strCmd += "[计划工时] TEXT,";
strCmd += "[实际工时] TEXT,";
strCmd += "[计划开始时间] TEXT,";
strCmd += "[内部最晚通过时间] TEXT,";
strCmd += "[备注] TEXT,";
// } strCmd = strCmd.Trim().Substring(, strCmd.Length - );
strCmd += ")";
OleDb_Comm.CommandText = strCmd;
OleDb_Comm.ExecuteNonQuery(); OleDb_Conn.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
OleDb_Conn.Close();
}
}

  第四步:调用如下的方法把数据按照【第三步】生成的数据列的顺序写入到EXCEL中。

      按照你的实际需求可以修改下面的这个方法的实现方式,下面只是一个参考作用。

 /// <summary>
/// OLEDB导出EXCEL
/// </summary>
/// <param name="dtrows">数据源</param>
/// <param name="filePath">写入的文件路径</param>
/// <param name="fileName">写入的文件名</param>
/// <param name="colunames">要显示的列数据</param>
private void ExportExcelOLEDB(DataRow[] dtrows, string filePath, string fileName, string[] colunames)
{
clearFile();//清除产生的临时文件
string SqlConnStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=0\"", filePath); // 当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
// 当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
// 当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
OleDbConnection con = new OleDbConnection(SqlConnStr);
string tablename = ExcelSheetName(filePath);
// string CommText = ""; //string.Format("INSERT INTO [" + tablename + "] VALUES(1,'elmer','password',1,'elmer','password',1,'elmer','password')");
StringBuilder CommText = new StringBuilder(); con.Open();
try
{
int col = colunames.Length;
foreach (DataRow dr in dtrows)
{
CommText.Append("INSERT INTO [" + tablename + "] VALUES(");
for (int i = ; i < col; i++)
{
if (i + == col)
{
CommText.Append("'" + ReplaceAll(dr[colunames[i]].ToString()) + "'");
}
else
{
CommText.Append("'" + ReplaceAll(dr[colunames[i]].ToString()) + "',");
}
}
CommText.Append(");"); using (OleDbCommand cmd = new OleDbCommand(CommText.ToString().Replace(':', ';').TrimEnd(';'), con))
{ //导出数据
cmd.ExecuteNonQuery(); }
CommText.Remove(, CommText.Length);
}
}
catch (Exception err) { Response.Write(err.ToString()); con.Close(); }
con.Close();
////向客户端发送文件...
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fileName) + ".xls");
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
//Response.AddHeader("Content-Length", file.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
Response.WriteFile(filePath);
Response.End();
}

    在实际应用中可以合并第三步和第四步,根据自己的实际需求可以组织自己的代码,这里只是提供了一个思路,希望大伙有意见提出来。。。。。。。

C#中导出EXCEL服务器端不用安装OFFICE的更多相关文章

  1. asp.net中导出Excel的方法

    一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...

  2. 在vue中导出excel表格

    初学者学习vue开发,想把前端项目中导出Excel表格,查了众多帖子,踩了很多坑,拿出来与大家分享一下经验. 安装依赖 //npm npm install file-saver -S npm inst ...

  3. 【转】js 中导出excel 较长数字串会变为科学计数法

    [转]js 中导出excel 较长数字串会变成科学计数法 在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串 ...

  4. UpdatePanel 中 导出Excel按钮

    UpdatePanel 中 导出Excel按钮 要加 Triggers </ContentTemplate> <Triggers> <asp:PostBackTrigge ...

  5. ASP.net中导出Excel的简单方法介绍

    下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...

  6. C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation

    C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation 后台添加以下方法:/// <summa ...

  7. asp.net中导出excel数据的方法汇总

    1.由dataset生成 代码如下 复制代码 public void CreateExcel(DataSet ds,string typeid,string FileName)    {    Htt ...

  8. vue中导出Excel表格

    项目中我们可能会碰到导出Excel文件的需求,一般后台管理系统中居多,将table中展示的数据导出保存到本地.当然我们也可以通过一些处理来修改要导出的数据格式,具体需求具体对待. 1.首先我们需要安装 ...

  9. Asp.net中导出Excel文档(Gridview)

    主要思路,通过GridView来导出文档. 新建一个Aspx页面,页面创建GridView控件,后台绑定好数据源.然后load中直接打印即可导出 前台的GridView <asp:GridVie ...

随机推荐

  1. hadoop零基础入门之DKH安装准备

    前几天去参加了一个线下的聚会,参加聚会的基本都是从事互联网工作的.会上有人提到了区块链,从而引发了一场关于大数据方面的探讨.我也是从去年才正式接触大数据,一直在学习hadoop.相信接触过hadoop ...

  2. mysql九大类常用函数

    一.数学函数 ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x) 返回值e(自然对数的底)的x次方 ...

  3. C# OracleBulkCopy 批量插入oracle数据库的方法

    只有安装了oracle 11G客户端的机器上才可以用,要用到ODP.NET组件中的oracleDataAccess.DLL,命名空间引用为Oracle.DataAccess.Client; 引用:Or ...

  4. make_heap()等函数的用法

    1.make_heap() make_heap()用于把一个可迭代容器变成一个堆,默认是大顶堆. 它有三个参数.第一个参数是指向开始元素的迭代器,第二个参数是指向最末尾元素的迭代器,第三个参数是les ...

  5. bzoj 4927: 第一题

    Description 给定n根直的木棍,要从中选出6根木棍,满足:能用这6根木棍拼 出一个正方形.注意木棍不能弯折.问方案数. 正方形:四条边都相等.四个角都是直角的四边形. Input 第一行一个 ...

  6. java日期比较例子等...

    数据库中employ表,入职日期,今天日期: 测试代码: package javademo; import java.sql.Connection; import java.sql.DriverMan ...

  7. 转!!!解释Eclipse下Tomcat项目部署路径问题(.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps)

    1.配置eclipse的开发环境,配置jdk的安装路径和tomcat安装路径. 2.在eclipse下建立Dynamic Web Project工程zhgy,在使用eclipse中new一个tomca ...

  8. 关于attr("checked")的输出

    同样的一段代码,在不同的文件输出不同的答案,好神奇. console.log($("#never").attr("checked")); 一个输出checked ...

  9. centos 安装卸载软件命令 & yum安装LAMP环境

    安装一个软件时 yum -y install httpd 安装多个相类似的软件时 yum -y install httpd* 安装多个非类似软件时 yum -y install httpd php p ...

  10. ssh的应用和vnc连接桌面

    什么是ssh? SSH是一种网络协议,用于计算机之间的加密登录.如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露.SSH之 ...