在C#版问郁闷了,来老家问问Winform往外倒Excel2007与2003怎么兼容?

别吵_我睡会儿先 2010-11-05 04:37:21
我的编译环境是Excel2007没问题 。

可是在Excel2003的机器上编译报错(new Microsoft.Office.Interop.Excel.ApplicationClass();)。缺少组件


private void MakeExcel()
{
string filePath = System.Windows.Forms.Application.StartupPath + "\\Board.xls";
if (!File.Exists(filePath))
{
//******************************************************
Microsoft.Office.Interop.Excel.Application xls_exp = null;
Microsoft.Office.Interop.Excel._Workbook xls_book = null;
Microsoft.Office.Interop.Excel._Worksheet xls_sheet = null;
object missing = System.Reflection.Missing.Value;
try
{
// string[] tt = new string[] { "客户简称", "客户姓名", "联系电话", "银行账号", "账户名称", "账户性质" };
xls_exp = new Microsoft.Office.Interop.Excel.ApplicationClass();
xls_exp.Visible = true;
xls_book = xls_exp.Workbooks.Add(missing);
xls_sheet = xls_book.Worksheets.Add(missing, missing, 1, missing) as Microsoft.Office.Interop.Excel._Worksheet; //(Microsoft.Office.Interop.Excel._Worksheet)xls_book.ActiveSheet;
xls_sheet.Name = "RelationerTable";
xls_sheet.Columns.NumberFormatLocal = "@";
xls_sheet.Cells[1, 1] = "客户简称";
xls_sheet.Cells[1, 2] = "客户姓名";
xls_sheet.Cells[1, 3] = "联系电话";
xls_sheet.Cells[1, 4] = "银行账号";
xls_sheet.Cells[1, 5] = "账户名称";
xls_sheet.Cells[1, 6] = "账户性质";
xls_book.SaveAs(filePath, missing, missing, missing, missing, missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, missing, missing, missing, missing, missing);
xls_exp.Quit();

System.Diagnostics.Process.Start(System.Windows.Forms.Application.StartupPath + "\\Board.xls");
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
finally
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xls_exp);
xls_exp = null;
GC.Collect();
}
//******************************************************
}
else
{
System.Diagnostics.Process.Start(System.Windows.Forms.Application.StartupPath + "\\Board.xls");
}
}




Excel2007没问题,在我的机器上编译通过 运行正常,
现在的问题是这种C/s的程序如果在的客户端是2003的环境,运行会报错吗?
如果会,怎么处理兼容呢?

刚刚由B/s转C/s 去 C#板块 问的我郁闷了,来老家转转,高手帮帮忙

...全文
185 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
ok 问题解决了 谢谢大家
孟子E章 2010-11-06
  • 打赏
  • 举报
回复
你使用Microsoft.Office.Interop.Excel.Application就可能存在版本的问题的‘

上面只是例子,B/s,c/s都适用的,你仔细看看导出的方法是什么

使用GridView只是其中一种数据源,使用DataTable等完全是可以的啊

LIUMRZY 2010-11-06
  • 打赏
  • 举报
回复
首先将Excel.exe copy 到 ..\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin目录下

利用.net 中带的工具在命令提示符下执行tlbimp excel.exe.


通过执行tlbimp excel.exe后我们会得到excel.dll文件。

只要有了这个Excel.dll,现在我们就能使用Excel的各种操作函数了也可以解决版本问题。
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]
兼容2003 2007 2010 的做法是生成xml格式的文件
生成过程参见
http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx
[/Quote]

E章大哥,我的是C/s的 而且还要用户操作Excel.所以 不合适
加油馒头 2010-11-05
  • 打赏
  • 举报
回复
客户端 也要装上 OFFICE支持的 组件库

具体支持不支持 那就不太清楚了
孟子E章 2010-11-05
  • 打赏
  • 举报
回复
兼容2003 2007 2010 的做法是生成xml格式的文件
生成过程参见
http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧