vs2005操作excel的问题 vs2005不能引用excel的com组件,设置权限也不行,而2003正常,我的是winXP系统,请各位高手指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 权限问题:如果是Window2003 ->控制面版 -> 管理工具 -> 组件服务 -> 打开树级目录找到子目录DCOM配置 -> Microsoft Excel 应用程序 -> 右击选“属性” -> 在弹出对话窗口中选“安全”选项卡-> -> 将启动和激活权限设为自定义->点击编辑按钮-> ->在新窗口中将Everyone用户加入,选中复选框"启动权限",给予启动权限如果是WindowXP ->控制面版 -> 管理工具 -> 组件服务(繁体为"元件服务") -> 打开树级目录找到子目录DCOM配置 -> Microsoft Excel 应用程序 -> 右击选“属性” -> 在弹出对话窗口中选“安全”选项卡-> -> 将启动和激活权限设为自定义->点击编辑按钮-> ->在新窗口中将Everyone用户加入,选中复选框"远程启动",给予远程启动权限其它操作系统应该类似.Excel article resource:http://blog.csdn.net/ChengKing/archive/2005/11/29/539514.aspxhttp://blog.joycode.com/ghj/archive/2005/01/12/42861.aspxhttp://www.cnblogs.com/powerlc/archive/2005/03/30/87512.htmlhttp://blog.csdn.net/net_lover/archive/2004/06/08/6963.aspxhttp://dotnet.aspx.cc/ShowDetail.aspx?id=4EB79F05-B9A4-4E8A-836F-864393F40405http://dotnet.aspx.cc/ShowDetail.aspx?id=6AFBF00B-459D-4642-AD14-8A4765FFAFCChttp://dotnet.aspx.cc/ShowDetail.aspx?id=8A4CBF47-B888-4832-3389-ED3A3A3C8AABhttp://support.microsoft.com/kb/317881/EN-US/http://study.99net.net/study/program/vb/1049955696.html 下面的这个类中,主要完成的功能是从数据库中逐字段读出数据,设置格式后,在Excel中显示出来。在这个类中,有两个参数传进来,一个是它的数据源,另一个是整个报表的标题字符串,具体看代码就应该知道了。using System;using System.Data;using Excel;namespace LogicLayer{ /// <summary> /// OutputExcel 的摘要说明 /// </summary> public class OutputExcel { public OutputExcel(DataView dv,string str) { // // TODO: 在此处添加构造函数逻辑 // Excel.Application excel; int rowIndex=4; int colIndex=1; Excel._Workbook xBk; Excel._Worksheet xSt; excel= new Excel.ApplicationClass();; xBk = excel.Workbooks.Add(true); xSt = (Excel._Worksheet)xBk.ActiveSheet; // //取得标题 // foreach(DataColumn col in dv.Table.Columns) { colIndex++; excel.Cells[4,colIndex] = col.ColumnName; xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐 } // //取得表格中的数据 // foreach(DataRowView row in dv) { rowIndex ++; colIndex = 1; foreach(DataColumn col in dv.Table.Columns) { colIndex ++; if(col.DataType == System.Type.GetType("System.DateTime")) { excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd"); xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐 } else if(col.DataType == System.Type.GetType("System.String")) { excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString(); xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐 } else { excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString(); } } } // //加载一个合计行 // int rowSum = rowIndex + 1; int colSum = 2; excel.Cells[rowSum,2] = "合计"; xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; // //设置选中的部分的颜色 // xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select(); xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种 // //取得整个报表的标题 // excel.Cells[2,2] = str; // //设置整个报表的标题格式 // xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true; xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22; // //设置报表表格为最适应宽度 // xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select(); xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit(); // //设置整个报表的标题为跨列居中 // xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select(); xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenterAcrossSelection; // //绘制边框 // xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1; xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight = Excel.XlBorderWeight.xlThick;//设置左边线加粗 xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlThick;//设置上边线加粗 xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight = Excel.XlBorderWeight.xlThick;//设置右边线加粗 xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlThick;//设置下边线加粗 // //显示效果 // excel.Visible=true; } }} c#如何一次性读取松下plc多个缓存区 【新手问题】如何把XML中指定的某个NODE的VALUE值提取出来 读取返回值是XmlNode的方法 datalist导出的word问题 C# winforms Dataset导出成Excel 急! 请教:有没有交互几个不同聊天工具信息的软件 如何调用过程 dll共享储存段的问题 关于多线程监控IP地址的问题 求助 实现这样的弹出对话框? 传送按键问题??? 有关于c#操作excel的问题 请各位大虾指教
如果是Window2003 ->控制面版 -> 管理工具 -> 组件服务 ->
打开树级目录找到子目录DCOM配置 -> Microsoft Excel 应用程序
-> 右击选“属性” -> 在弹出对话窗口中选“安全”选项卡->
-> 将启动和激活权限设为自定义->点击编辑按钮->
->在新窗口中将Everyone用户加入,选中复选框"启动权限",给予启动权限如果是WindowXP ->控制面版 -> 管理工具 -> 组件服务(繁体为"元件服务") ->
打开树级目录找到子目录DCOM配置 -> Microsoft Excel 应用程序
-> 右击选“属性” -> 在弹出对话窗口中选“安全”选项卡->
-> 将启动和激活权限设为自定义->点击编辑按钮->
->在新窗口中将Everyone用户加入,选中复选框"远程启动",给予远程启动权限其它操作系统应该类似.
Excel article resource:
http://blog.csdn.net/ChengKing/archive/2005/11/29/539514.aspx
http://blog.joycode.com/ghj/archive/2005/01/12/42861.aspx
http://www.cnblogs.com/powerlc/archive/2005/03/30/87512.html
http://blog.csdn.net/net_lover/archive/2004/06/08/6963.aspx
http://dotnet.aspx.cc/ShowDetail.aspx?id=4EB79F05-B9A4-4E8A-836F-864393F40405
http://dotnet.aspx.cc/ShowDetail.aspx?id=6AFBF00B-459D-4642-AD14-8A4765FFAFCC
http://dotnet.aspx.cc/ShowDetail.aspx?id=8A4CBF47-B888-4832-3389-ED3A3A3C8AAB
http://support.microsoft.com/kb/317881/EN-US/
http://study.99net.net/study/program/vb/1049955696.html
using System.Data;
using Excel;namespace LogicLayer
{
/// <summary>
/// OutputExcel 的摘要说明
/// </summary>
public class OutputExcel
{
public OutputExcel(DataView dv,string str)
{
//
// TODO: 在此处添加构造函数逻辑
//
Excel.Application excel;
int rowIndex=4;
int colIndex=1; Excel._Workbook xBk;
Excel._Worksheet xSt; excel= new Excel.ApplicationClass();;
xBk = excel.Workbooks.Add(true);
xSt = (Excel._Worksheet)xBk.ActiveSheet; //
//取得标题
//
foreach(DataColumn col in dv.Table.Columns)
{
colIndex++;
excel.Cells[4,colIndex] = col.ColumnName;
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
} //
//取得表格中的数据
//
foreach(DataRowView row in dv)
{
rowIndex ++;
colIndex = 1;
foreach(DataColumn col in dv.Table.Columns)
{
colIndex ++;
if(col.DataType == System.Type.GetType("System.DateTime"))
{
excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
}
else
if(col.DataType == System.Type.GetType("System.String"))
{
excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();
xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
}
else
{
excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();
}
}
}
//
//加载一个合计行
//
int rowSum = rowIndex + 1;
int colSum = 2;
excel.Cells[rowSum,2] = "合计";
xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
//
//设置选中的部分的颜色
//
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种
//
//取得整个报表的标题
//
excel.Cells[2,2] = str;
//
//设置整个报表的标题格式
//
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;
//
//设置报表表格为最适应宽度
//
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();
//
//设置整个报表的标题为跨列居中
//
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();
xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenterAcrossSelection;
//
//绘制边框
//
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;
xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight = Excel.XlBorderWeight.xlThick;//设置左边线加粗
xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlThick;//设置上边线加粗
xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight = Excel.XlBorderWeight.xlThick;//设置右边线加粗
xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlThick;//设置下边线加粗
//
//显示效果
//
excel.Visible=true;
}
}
}