【发布时间】:2017-12-26 03:02:38
【问题描述】:
我有一个数据对象数组 object[,] 来自通过 SqlDataAdapter 加载的 SQL 数据库表,它包含 Excel 公式。
我想将对象粘贴到已打开的 Excel 文件中的某个范围内。
我应该补充一点,当数据表包含诸如“这是一个测试”之类的字符串而不是诸如“=SUM(A1:A5)”之类的 Excel 公式时,一切正常
但我不断遇到对我来说毫无意义的异常。请指教!
这就是我所拥有的。我忽略了什么?
private void InsertBridgeCalcBlock()
{
Excel.Application xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
try
{
xlActiveCell = xlApp.ActiveCell;
DataTable dt = new DataTable();
try
{
using (SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM " + sDBBridgeCalcTable, conn))
{
da.Fill(dt);
}
}
catch (Exception ex)
{
MessageBox.Show("Error Message:" + Environment.NewLine + ex);
}
object[,] BridgeCalcTable = new object[dt.Rows.Count + 1,dt.Columns.Count];
for (var i = 0; i < dt.Rows.Count; i++)
for (var j = 1; j < dt.Columns.Count; j++)
{
BridgeCalcTable[i, j-1] = dt.Rows[i][j];
}
Excel.Range insertBridgeCalcTableRange = xlApp.Range[xlApp.ActiveSheet.Cells[xlActiveCell.Row-2, 11], xlApp.ActiveSheet.Cells[xlActiveCell.Row-2 + dt.Rows.Count - 1, 11 + dt.Columns.Count]]; // set insertrange
xlApp.ActiveSheet.EnableCalculation = true;
insertBridgeCalcTableRange.Value = BridgeCalcTable; // fill range with data
}
catch (Exception ex)
{
MessageBox.Show("Error Message:" + Environment.NewLine + ex);
}
}
异常如下:
System.Runtime.InteropServices.COMException (0x800A03EC):
Exception from HRESULT: 0x800A03EC at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWarpperTypes, MessageData& msgData)
at Microsoft.Office.Interop.Excel.Rage.ser_Value(obejct value) at LookApp2016.Form1.InsertBridgeCalcBlock() in ~~myfilelocation~~ line 2886
【问题讨论】:
-
您遇到了哪些例外情况?
-
好问题,我已经在我的问题中编辑了它们。
-
检查这是否对您有帮助 stackoverflow.com/questions/4408336/…
-
谢谢。但我以前读过那个答案。我的 winform 是一个 clickonce 应用程序。我没有将任何内容保存到服务器。
-
您在哪一行得到您的例外?
标签: c# excel winforms excel-interop