test.html的内容:(web服务器上的文件)
<html>
<body>
<object id="Exltest" classid="http:Exlclass.dll#Exlclass.UserControl1" width=500 height=500></object>
</body>
<html>
IE中显示有安全问题,但在本机上c#中新建app去调用写的Dll,运行通过,所有功能正常!c#的类写法:(目的 将xml文件导入exl)
private void button2_Click(object sender, System.EventArgs e)
{
string filename;
filename="C:\\MSDVP\\classpro\\ClassCall\\Exl.xml";
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load(filename); Excel.Application Exlapp;
Excel._Workbook ExlWB;
Excel._Worksheet ExlSheet;
Excel.Range ExlRng;

Exlapp=new Excel.Application();
Exlapp.Visible=true;
Exlapp.UserControl=true; ExlWB = (Excel._Workbook)(Exlapp.Workbooks.Add( Missing.Value ));
ExlSheet = (Excel._Worksheet)ExlWB.ActiveSheet; int num=0;
string table;
            
XmlNodeList nodeList1=xmlDoc.SelectSingleNode("Employees").ChildNodes;
foreach(XmlNode xn1 in nodeList1)
{
XmlElement xe1=(XmlElement)xn1;
XmlNodeList nodeList2=xe1.ChildNodes;
num=num+1;
foreach(XmlNode xn2 in nodeList2)
{
XmlElement xe2=(XmlElement)xn2;
if (xe2.Name=="Name")
{
table="A"+num.ToString();
ExlSheet.get_Range(table,table).Value2=xe2.InnerText;
ExlSheet.get_Range(table,table).Borders.LineStyle=1;
}
if (xe2.Name=="Score")
{
table="B"+num.ToString();
ExlSheet.get_Range(table,table).Value2=xe2.InnerText;
ExlSheet.get_Range(table,table).Borders.LineStyle=1;                      
}
}
}

Excel._Chart ExlChart;
int Exlcount=1;
ExlChart = (Excel._Chart)ExlWB.Charts.Add( Missing.Value, Missing.Value,Missing.Value, Missing.Value );
string begin="B1";
string end="B"+num.ToString();
string myrang=begin+":"+end;
ExlRng = ExlSheet.get_Range(myrang, Missing.Value ).get_Resize(Missing.Value,Exlcount);
ExlChart.ChartWizard( ExlRng, Excel.XlChartType.xl3DColumn, Missing.Value,Excel.XlRowCol.xlColumns, Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value, Missing.Value );
    
ExlChart.Location( Excel.XlChartLocation.xlLocationAsObject, ExlSheet.Name );
ExlRng = (Excel.Range)ExlSheet.Rows.get_Item(num+2, Missing.Value );
ExlSheet.Shapes.Item("Chart 1").Top = (float)(double)ExlRng.Top;
ExlRng = (Excel.Range)ExlSheet.Columns.get_Item(2, Missing.Value );
ExlSheet.Shapes.Item("Chart 1").Left = (float)(double)ExlRng.Left;

String sMsg;
sMsg = "Print Preview? ";
DialogResult Ret1 = MessageBox.Show(sMsg, "Excel Display",MessageBoxButtons.YesNo );
if (Ret1 == DialogResult.Yes)  ExlWB.PrintPreview(1);
sMsg= "Save ?";
DialogResult Ret2 = MessageBox.Show(sMsg, "Excel Display",MessageBoxButtons.YesNo );
if (Ret2 == DialogResult.Yes)  ExlWB.SaveAs("C:\\MSDVP\\classpro\\ClassCall\\test.xls",Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value, Missing.Value, Missing.Value, Missing.Value);

//ExlWB.Close(false, Missing.Value, Missing.Value);
//Exlapp.Quit();
如果不够可以加,想得到解决.
客户的目的是:
(1)上传xml文件,或在线输入数据.
(2)通过ie调用普通的html或htm,然后调用dll.
(3)将xml数据调入exl中,有客户决定是否打印exl.(有汇总的柱子图.)

解决方案 »

  1.   

    忘了说了,IE中把dll中的界面显示出来了.我按了导出的按钮,就
    出现安全错误.根据自己跟踪,因该是在xmlDoc.Load(filename);之后,不太肯定,Exlapp=new Excel.Application();好象无法建立对象.
      

  2.   

    你必须修改客户端的“NET框架的配置文件”!你可以用:caspol.exe 文件去修改或自己写程序修改!
      

  3.   

    caspol.exe 是什么啊?那里配置啊?能不能说详细点啊?谢谢达人!
      

  4.   

    我知道怎样设置的,开始-->控制面半-->管理工具-->NET框架的配置文件.把计算机的-->ALL code的权限改为full trust.不过,这不是很安全的.caspol.exe我也不知道,怎么配置?你先试试把!
      

  5.   

    现在能运行通过了,好象有安全问题.正在研究安全配置问题!如果有谁知道caspol.exe怎么去配置,我可以另外给分的!谢谢大家!