(原創)C#使用QueryTables導出到Excel
private void ExortToExcel1(string strSql)
{
string ExportPath = Request.PhysicalApplicationPath + "Temp\\";
string strFileName = Session.SessionID+DateTime.Now.ToString("yyyyMMdd hhmmss")+".xls";
//新建一Excel應用程式
Missing missing = Missing.Value;
Excel.ApplicationClass objExcel = null;
Excel.Workbooks objBooks = null;
Excel.Workbook objBook = null;
Excel.Worksheet objSheet = null;
try
{
objExcel = new Excel.ApplicationClass();
objExcel.Visible = false;
objBooks = (Excel.Workbooks)objExcel.Workbooks;
objBook = (Excel.Workbook)(objBooks.Add(missing));
objSheet = (Excel.Worksheet)objBook.ActiveSheet;
string conn = "ODBC;DRIVER={Oracle in OraHome92};SERVER=MCM;UID=SFC;PWD=SFC;DBQ=MCM;";
Excel.QueryTable tb = objSheet.QueryTables.Add(conn,objSheet.get_Range("A1", missing),strSql);
//tb.Name = "來自 FCNP 的查詢";
tb.FieldNames = true;
tb.RowNumbers = false;
tb.FillAdjacentFormulas = false;
tb.PreserveFormatting = true;
tb.RefreshOnFileOpen = false;
tb.BackgroundQuery = true;
tb.RefreshStyle = Excel.XlCellInsertionMode.xlInsertDeleteCells;
tb.SavePassword = false;
tb.SaveData = true;
tb.AdjustColumnWidth = true;
tb.RefreshPeriod = 0;
tb.PreserveColumnInfo = true;
tb.BackgroundQuery = false;
tb.Refresh(tb.BackgroundQuery);
try
{
objSheet.PageSetup.LeftMargin = 20;
objSheet.PageSetup.RightMargin = 20;
objSheet.PageSetup.TopMargin = 35;
objSheet.PageSetup.BottomMargin = 15;
objSheet.PageSetup.HeaderMargin = 7;
objSheet.PageSetup.FooterMargin = 10;
objSheet.PageSetup.CenterHorizontally = true;
objSheet.PageSetup.CenterVertically = false;
objSheet.PageSetup.Orientation = Excel.XlPageOrientation.xlPortrait;
objSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperA4;
objSheet.PageSetup.Zoom = false;
objSheet.PageSetup.FitToPagesWide = 1;
objSheet.PageSetup.FitToPagesTall = false;
}
catch
{
}
//關閉Excel
objBook.SaveAs(ExportPath+strFileName, missing, missing, missing, missing, missing,Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing,missing);
objBook.Close(false,missing,missing);
objBooks.Close();
objExcel.Quit();
}
finally
{
//System.Runtime.InteropServices.Marshal.ReleaseComObject(objRange);
if (!objSheet.Equals(null))
System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet);
if (objBook!=null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objBook);
if (objBooks!=null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objBooks);
if (objExcel!=null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcel);
GC.Collect();
}
//保存或打開報表
Response.Clear();
Response.Buffer= true;
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("content-disposition","attachment;filename="+strFileName+".xls");
Response.Charset = "";
this.EnableViewState = false;
Response.WriteFile(ExportPath+strFileName);
Response.End();
}
註:必須安裝odbc for oracle
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人