C#导出数据到Excel过程中遇到的异常来自 HRESULT:0x800A03EC 20
usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.We...
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;//SQL数据库
using Excel = Microsoft.Office.Interop.Excel;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//创建Excel文件
CreateExcelTable();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
}
private DataSet GetData()
{
//从数据库中获取数据
string cmdText = "Select * from demo";
SqlConnection myConnection = new SqlConnection("Data Source=172.16.57.250;Initial Catalog=MentalityTest;User ID=sa;Password=sasa");
SqlDataAdapter sqldataAdapter = new SqlDataAdapter(cmdText, myConnection);
//执行数据库查询
myConnection.Open();
DataSet myds = new DataSet();
sqldataAdapter.Fill(myds);
myConnection.Close();
return (myds);
}
private void CreateExcelTable()
{
//从数据库获取数据
DataSet ds= GetData();
//创建Excel对象
Excel.Application excel = new Excel.Application();
//设置行和列的索引
int rowUndex = 1;
int collndex = 0;
//添加Excel对象的WorkBooks
excel.Application.Workbooks.Add(true);
System.Data.DataTable table = ds.Tables[0];
//将所得到的表的列名赋值给单元格
foreach (DataColumn col in table.Columns)
{
//添加列名
collndex++;
excel.Cells[1, collndex] = col.ColumnName;
}
//同样的方法处理数据
foreach (DataRow row in table.Rows)
{
//添加数据
rowUndex++;
collndex = 0;
foreach (DataColumn col in table.Columns)
{
collndex++;
excel.Cells[rowUndex,collndex]=row[col.ColumnName].ToString();
}
}
//不可见,即后台处理
excel.Visible=false;
excel.DisplayAlerts=false;
//保存刚才创建的表格
excel.Save(MapPath("ExcelDB/ExcelTable.xls"));
excel.Application.Workbooks.Close();
excel.Application.Quit();
excel.Quit();
//释放使用的Excel对象
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
GC.Collect();
}
}
异常情况
异常来自 HRESULT:0x800A03EC
用户代码未处理 System.Runtime.InteropServices.COMException
Message="异常来自 HRESULT:0x800A03EC"
Source="Microsoft.Office.Interop.Excel"
ErrorCode=-2146827284
StackTrace:
在 Microsoft.Office.Interop.Excel.ApplicationClass.Save(Object Filename)
在 _Default.CreateExcelTable() 位置 d:\我的文档\Visual Studio 2005\WebSites\demo_Excel\Default.aspx.cs:行号 74
在 _Default.Page_Load(Object sender, EventArgs e) 位置 d:\我的文档\Visual Studio 2005\WebSites\demo_Excel\Default.aspx.cs:行号 19
在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 展开
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;//SQL数据库
using Excel = Microsoft.Office.Interop.Excel;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//创建Excel文件
CreateExcelTable();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
}
private DataSet GetData()
{
//从数据库中获取数据
string cmdText = "Select * from demo";
SqlConnection myConnection = new SqlConnection("Data Source=172.16.57.250;Initial Catalog=MentalityTest;User ID=sa;Password=sasa");
SqlDataAdapter sqldataAdapter = new SqlDataAdapter(cmdText, myConnection);
//执行数据库查询
myConnection.Open();
DataSet myds = new DataSet();
sqldataAdapter.Fill(myds);
myConnection.Close();
return (myds);
}
private void CreateExcelTable()
{
//从数据库获取数据
DataSet ds= GetData();
//创建Excel对象
Excel.Application excel = new Excel.Application();
//设置行和列的索引
int rowUndex = 1;
int collndex = 0;
//添加Excel对象的WorkBooks
excel.Application.Workbooks.Add(true);
System.Data.DataTable table = ds.Tables[0];
//将所得到的表的列名赋值给单元格
foreach (DataColumn col in table.Columns)
{
//添加列名
collndex++;
excel.Cells[1, collndex] = col.ColumnName;
}
//同样的方法处理数据
foreach (DataRow row in table.Rows)
{
//添加数据
rowUndex++;
collndex = 0;
foreach (DataColumn col in table.Columns)
{
collndex++;
excel.Cells[rowUndex,collndex]=row[col.ColumnName].ToString();
}
}
//不可见,即后台处理
excel.Visible=false;
excel.DisplayAlerts=false;
//保存刚才创建的表格
excel.Save(MapPath("ExcelDB/ExcelTable.xls"));
excel.Application.Workbooks.Close();
excel.Application.Quit();
excel.Quit();
//释放使用的Excel对象
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
GC.Collect();
}
}
异常情况
异常来自 HRESULT:0x800A03EC
用户代码未处理 System.Runtime.InteropServices.COMException
Message="异常来自 HRESULT:0x800A03EC"
Source="Microsoft.Office.Interop.Excel"
ErrorCode=-2146827284
StackTrace:
在 Microsoft.Office.Interop.Excel.ApplicationClass.Save(Object Filename)
在 _Default.CreateExcelTable() 位置 d:\我的文档\Visual Studio 2005\WebSites\demo_Excel\Default.aspx.cs:行号 74
在 _Default.Page_Load(Object sender, EventArgs e) 位置 d:\我的文档\Visual Studio 2005\WebSites\demo_Excel\Default.aspx.cs:行号 19
在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 展开
4个回答
展开全部
好像没这么复杂!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题不好说了,自己加个断点看下具体是在哪个地方报的错,也好对症下药啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是水晶报表呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询