C#如何创建Excel 97-2003 (.xls) Interop文件?

3

使用Excel = Microsoft.Office.Interop.Excel;

我需要从我的datagridview保存一个excel文件(.xls)。所有的操作都很顺利,包括写入数据、更改单元格格式等。但是在保存文档时出现了问题。

string format = "yyyy_MM_dd_HH-mm";
string pathtoexport = @"C:\DM\SMS\Przychodzace\Znalezione_SMS_" + DateTime.Now.ToString(format) + ".xls";
oWB.SaveAs(pathtoexport, Excel.XlFileFormat.xlWorkbookNormal, missing, missing,
      false, false, Excel.XlSaveAsAccessMode.xlNoChange,
      missing, missing, missing, missing, missing);
    }

几天前还能正常工作,但现在只显示:

HRESULT: 0x800A03EC"}

我需要将它导入 SQL,文件格式为 .xls,请问有什么建议吗?


之前的问题出在 Excel.XlFileFormat.xlWorkbookDefault 上,当我将其改为 Normal 时它可以正常运行。现在不行了。我花了很多时间自己查资料,但是失败了。

oWB.SaveAs(MyFile + @"C:\SMS\XMLCopy.xls",
      Excel.XlFileFormat.xlWorkbookNormal, missing, missing,
      false, false, Excel.XlSaveAsAccessMode.xlNoChange,
      missing, missing, missing, missing, missing);
5个回答

3
 string format = "yyyy_MM_dd_HH-mm";
        string pathtoexport = "C:\\DM\\SMS\\Przychodzace\\Znalezione_SMS_" + DateTime.Now.ToString(format) + ".xls";

        oWB.SaveAs(pathtoexport, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

现在它已经可以正常工作了。感谢您的帮助。

2
尝试使用Excel.XlFileFormat.xlWorkbookDefault

0

我在你的代码中没有看到任何明显的问题。有可能是访问该路径时出现了一些问题吗?如果你尝试手动保存一个文件到该路径(假设你使用的是与interop进程运行在同一帐户下),它能正常工作吗?

否则,你是否使用某种Excel模板文件或其他可能已经损坏的东西?


0

如果您/您的客户有能力支付,可以使用Aspose.Cells,它非常适合从头开始生成Excel文档,无需在计算机上安装Office。

另一方面,该解决方案需要付费。


1
我需要免费的解决方案,因为我们只会在一个模块中使用它。所以这不是答案 :( - Wojtek Trepiak

0

看起来像是Interop版本冲突。你是否在与之前正常工作的同一台机器上遇到了这个问题,还是已经移动到另一台机器上了?如果在同一台机器上,请尝试回溯并查找任何更改或更新。如果在另一台机器上,则验证您是否已安装正确的版本。

这可能听起来很傻,但我在从dev -> test -> prod切换时遇到过各种奇怪的问题,因为环境之间存在不一致性。

如果还没有,请尝试从项目中删除该引用并重新应用它。

这也可能是由于权限(或缺乏权限)导致的。您是否尝试从同一代码片段创建一个纯文本文件?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接