C# 将Excel 95转换为Excel 97或更高版本

C# 将Excel 95转换为Excel 97或更高版本,c#,excel,C#,Excel,因此,我们使用第三方组件来打开并在excel工作表上做一些工作。但是,该工具无法处理Excel 95文件。有人知道有一种可以将Excel 95文件转换为更高格式的工具吗?它可以指向外部应用程序…基于命令行的东西最好 另外:我们不能使用Excel COM互操作。您可以使用打开它,并使用类将其写入xlsx文件 在Google上搜索ado.Net excel c 35;,您将发现许多关于如何设置连接字符串和打开excel文件的示例。(例如) 理论上,您应该能够迭代工作表和行/列,并以类似的方式将它们写

因此,我们使用第三方组件来打开并在excel工作表上做一些工作。但是,该工具无法处理Excel 95文件。有人知道有一种可以将Excel 95文件转换为更高格式的工具吗?它可以指向外部应用程序…基于命令行的东西最好


另外:我们不能使用Excel COM互操作。

您可以使用打开它,并使用类将其写入xlsx文件

在Google上搜索ado.Net excel c 35;,您将发现许多关于如何设置连接字符串和打开excel文件的示例。(例如)


理论上,您应该能够迭代工作表和行/列,并以类似的方式将它们写入xlsx文件。

您可以使用一个小的Excel helper宏。打开95源代码,并使用命令行将其另存为另一种格式。您可以使用kernel32/GetCommandLine例程将cmdline参数输入到应用程序中

为此,请创建一个工作簿“Converter.xls”,并插入以下代码

模块“此工作簿”

模块“模块1”

最后,从包含95-XLS的路径通过命令行调用此命令

C:\Progra~1\Micros~2\OFFICE11\excel Converter.xls /e/test95.xls
test95.xls将以xlExcel7格式打开并保存为test2003.xls

到目前为止,基本技术。。。现在您可以创造性地添加第二个cmd行参数(以“/”分隔)-更智能地解析,等等

重要提示:Excel必须在“放松的安全性”下运行,以避免启动时出现宏警告消息-但是,只要您进行调试,警告消息就非常有用(禁用允许您返回代码;-))

我在Excel2003上快速测试了这个


希望有帮助

您是否尝试过使用自动化启动Excel流程、加载Excel 95文件并保存为新格式?使用一些第三方组件,例如aspose.cells我们已经有了一个第三方组件,不打算购买另一个。如果已经安装了Excel,那么interop将是一个更好的方法,但正如问题中提到的那样。互操作不是一个选项,因此我假设安装Excel也不是一个选项。排除的原因是Excel COM互操作(原因可能是:不支持VBA,只需要C#,.NET framework等),而不是Excel。所以这里有一个解决方案,你只需要Excel,再加上一项技术,让你可以从命令行(批处理)使用它。是的,问题是,在某些情况下,互操作是不可靠的——这是非常不可预测的。我们可以设置它,让它在某些用户的计算机上运行良好,但在其他用户的计算机上,它会失败,并出现错误“无法访问互操作”
Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineW" () As Long
Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (MyDest As Any, MySource As Any, ByVal MySize As Long)

Function CmdToSTr(Cmd As Long) As String
Dim Buffer() As Byte
Dim StrLen As Long

   If Cmd Then
      StrLen = lstrlenW(Cmd) * 2
      If StrLen Then
         ReDim Buffer(0 To (StrLen - 1)) As Byte
         CopyMemory Buffer(0), ByVal Cmd, StrLen
         CmdToSTr = Buffer
      End If
   End If
End Function
C:\Progra~1\Micros~2\OFFICE11\excel Converter.xls /e/test95.xls