C# 导入excel的时候 [COMException (0x800a03ec): 异常来自 HRESULT:0x800A03EC] 在本机上运行都是好的 但是放到服务器上就一直报这个错 数据库代码在本机和服务器上用的都是一样的 找了很多资料说是下标问题 但是在本机都是好的啊 有没有高手帮帮忙啊 整整3天了 没弄出来 是不是涉及到服务器的组件配置或者权限之类的 还请帮帮忙啊 因为只有在服务器上出错 小弟也不清楚 具体哪一行代码出错是新人 就这么点分儿了 还请帮帮忙啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是代码 Microsoft.Office.Interop.Excel.Application excel; Microsoft.Office.Interop.Excel._Workbook xBk; Microsoft.Office.Interop.Excel._Worksheet xSt; int rowIndex = 1; int colIndex = 1; excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); xBk = excel.Workbooks.Add(true); xSt = (Microsoft.Office.Interop.Excel._Worksheet)xBk.ActiveSheet; xSt.Name = string.Format("{0:yyyy-MM}", DateTime.Now); //取得列标题 foreach (DataColumn col in dt.Columns) { excel.Cells[1, colIndex] = col.ColumnName; //设置标题格式为居中对齐 xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).Font.Bold = true; xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).Select(); colIndex++; } //取得表格中的数据 foreach (DataRow row in dt.Rows) { rowIndex++; colIndex = 0; foreach (DataColumn col in dt.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 = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐 } else { excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString(); } } } int rowSum = rowIndex; //设置报表表格为最适应宽度 xSt.get_Range(excel.Cells[1, 1], excel.Cells[rowSum, colIndex]).Columns.AutoFit(); string filename = string.Format("{0:yyyy-MM}", DateTime.Now) + ".xls"; excel.ActiveWorkbook.SaveAs(FilePath + filename, Missing.Value, Missing.Value, Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null); #region 结束Excel进程 xBk.Close(null, null, null); excel.Workbooks.Close(); excel.Quit();错误是[COMException (0x800a03ec): 异常来自 HRESULT:0x800A03EC] Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local) +0 Pages_Report_Storage_StorageReports.CreateExcel(DataTable dt, String FilePath) +2382 Pages_Report_Storage_StorageReports.GetData() +2160 Pages_Report_Storage_StorageReports.btnXls_Click(Object sender, EventArgs e) +5 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 Microsoft.Office.Interop.Excel.Application excel; Microsoft.Office.Interop.Excel._Workbook xBk; Microsoft.Office.Interop.Excel._Worksheet xSt;服务器上有这些com吗??? 围观 学习 --reply by CSDN Study V1.0.0.3 (starts_2000) Microsoft.Office.Interop.Excel.Application excel; Microsoft.Office.Interop.Excel._Workbook xBk; Microsoft.Office.Interop.Excel._Worksheet xSt;com版本是否和开发一致??版本不一致很容易出错的 下次速度 --reply by CSDN Study V1.0.0.3 (starts_2000) excel.ActiveWorkbook.SaveAs(FilePath + filename, Missing.Value, Missing.Value, Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);这句出错了,看看参数是否正确,版本是否一致 1:在服务器上安装office的Excel软件. 2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务" 3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置" 4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框 5:点击"标识"标签,选择"交互式用户" 6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限. 7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限. 这样,我们便配置好了相应的Excel的DCOM权限. 设下权限 版本都是excel2003 这些参数应该没问题啊 如果说那些组件服务器上有没有应该怎么才能查找出来有没有呢请教啊 首先确认你服务器上已经安装了Excel,如果安装了,那肯定是保存Excel的文件夹没有写的权限,设置下文件夹权限应该就可以了 我直接把excel保存在C盘根目录的 是要把C盘设置权限么 是设置给network service这个用户么 我在DCOM里面配置的就是network service用户 这个IPAddress数组是什么意思啊 注册表问题!!!在线等 子窗体显示被遮盖 请问大家用.net怎么样才能获取上一天的时间,最后10分了,请大家帮忙。谢谢!!! 你想得分吗 求助!动网asp8.2的论坛和asp.net2.0项目结合的问题 登录窗口! 想使DataGrid的enable=false,又想使滚动条可用,哪位大侠有什么好办法啊 .net安装盘里面带有一个中文版的visio 请问一个datagrid换行问题 C# 控件的放大缩小 怎么做 技术人员帮个忙
Microsoft.Office.Interop.Excel.Application excel;
Microsoft.Office.Interop.Excel._Workbook xBk;
Microsoft.Office.Interop.Excel._Worksheet xSt; int rowIndex = 1;
int colIndex = 1; excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
xBk = excel.Workbooks.Add(true);
xSt = (Microsoft.Office.Interop.Excel._Worksheet)xBk.ActiveSheet;
xSt.Name = string.Format("{0:yyyy-MM}", DateTime.Now);
//取得列标题
foreach (DataColumn col in dt.Columns)
{ excel.Cells[1, colIndex] = col.ColumnName; //设置标题格式为居中对齐
xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).Font.Bold = true;
xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
xSt.get_Range(excel.Cells[1, colIndex], excel.Cells[1, colIndex]).Select();
colIndex++;
}
//取得表格中的数据
foreach (DataRow row in dt.Rows)
{
rowIndex++;
colIndex = 0;
foreach (DataColumn col in dt.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 = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
}
else
{
excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
}
}
} int rowSum = rowIndex;
//设置报表表格为最适应宽度
xSt.get_Range(excel.Cells[1, 1], excel.Cells[rowSum, colIndex]).Columns.AutoFit(); string filename = string.Format("{0:yyyy-MM}", DateTime.Now) + ".xls";
excel.ActiveWorkbook.SaveAs(FilePath + filename, Missing.Value, Missing.Value, Missing.Value, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null); #region 结束Excel进程
xBk.Close(null, null, null);
excel.Workbooks.Close();
excel.Quit();错误是
[COMException (0x800a03ec): 异常来自 HRESULT:0x800A03EC]
Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(Object Filename, Object FileFormat, Object Password, Object WriteResPassword, Object ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object TextVisualLayout, Object Local) +0
Pages_Report_Storage_StorageReports.CreateExcel(DataTable dt, String FilePath) +2382
Pages_Report_Storage_StorageReports.GetData() +2160
Pages_Report_Storage_StorageReports.btnXls_Click(Object sender, EventArgs e) +5
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
Microsoft.Office.Interop.Excel._Workbook xBk;
Microsoft.Office.Interop.Excel._Worksheet xSt;服务器上有这些com吗???
Microsoft.Office.Interop.Excel._Workbook xBk;
Microsoft.Office.Interop.Excel._Worksheet xSt;
com版本是否和开发一致??版本不一致很容易出错的
2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"
3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"
4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框
5:点击"标识"标签,选择"交互式用户"
6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.
7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限.
这样,我们便配置好了相应的Excel的DCOM权限.
设下权限
版本都是excel2003 这些参数应该没问题啊 如果说那些组件服务器上有没有应该怎么才能查找出来有没有呢请教啊
我直接把excel保存在C盘根目录的 是要把C盘设置权限么 是设置给network service这个用户么 我在DCOM里面配置的就是network service用户