string dateFlag = DateTime.Now.ToString("yyyyMMddHHmmss");
DataSet dataSet = loader.GetExportData(ID);
MemoryStream memory = Export_ExamData(dataSet);
TranDataToClient("Infor_" + dateFlag + ".xls", memory.ToArray());
private System.IO.MemoryStream Export_ExamData(DataSet dt)
{
System.IO.MemoryStream ms = new System.IO.MemoryStream();
IO.DataSet2Excel(dt, ms);
return ms;
}
/// <summary>
/// 导出Excel模板
/// </summary>
/// <param name="strfilename"></param>
/// <param name="templateValue"></param>
private void TranDataToClient(string strfilename, byte[] templateValue)
{
string path = strfilename;
int count = templateValue.Length;
// 从缓冲区中清除当前输出内容
Response.Clear();
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(path));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader("Content-Length", count.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "octet-stream";
// 把文件流发送到客户端
Response.OutputStream.Write(templateValue, 0, count);
// 停止页面的执行
Response.End();
}
public DataSet GetExportData(string ID)
{
OracleParameter[] parameters = new OracleParameter[18];
#region Parameters Define.
int i = 0;
parameters[i] = new OracleParameter("p_exammarrange_id", OracleType.NVarChar);
parameters[i].Value = ID;
i++;
parameters[i] = new OracleParameter("o_exammarrange", OracleType.Cursor);
Oracle&C# 导出多Sheet Excel ,使用Oracle Package (不积跬步,无以至千里)
最新推荐文章于 2021-05-28 18:43:28 发布
该博客展示了如何使用C#结合Oracle Package来导出包含多个Sheet的Excel文件。通过调用`GetExportData`方法获取数据,然后使用`Export_ExamData`将数据转换为Excel并保存到内存流中,最后通过`TranDataToClient`将文件发送到客户端进行下载。方法中涉及到Oracle参数设置及数据集转换。
摘要由CSDN通过智能技术生成