使用.NET修改Excel电子表格

这是问题:

我必须使用.NET修改现有的Excel电子表格。 电子表格非常复杂,我只需要在一些预定义的区域添加数据。

我正在调查我的选项,而Excel自动化/ InterOp是不可能的,因为我正在实现一个ASP.NET网站,Excel可能没有安装在服务器上。 从我在网上find的,InterOp在性能上也是一个非常昂贵的解决scheme。

由于原始电子表格的复杂性质,也排除了创buildCSV文件。

目前我倾向于一个ADO.NET OleDb解决scheme,但我发现,很less提到(Google和Stackoverflow.com),所以我有点担心:OldDb for Excel有什么用? 唯一的缺点,我可以find在MSDN到目前为止,我不能创build具有公式的单元格,但这对我来说真的不是问题。

我也考虑过SSIS,但这只是基于我的假设,你可以在生成电子表格时使用现有的Excel文件。 我不知道这是否可能。

然后是OpenXml。 与OldDb相比,它似乎过于复杂,而且还不确定我必须支持哪个旧的Excel版本。

我错过了什么吗? 有更多的select吗?

在这种情况下,我通常会赞成不要混淆复杂的电子表格,而是build立一个单独的数据文件,我将其链接到复杂的电子表格中的数据单元格。 这比从外部更改复杂的电子表格更清洁,更安全。

如果这不是比你目前所面临的select更容易,这会让我感到惊讶。 但是,我没有看到你的电子表格。

查看MyXls的.NET解决scheme来读取和写入二进制XLS文件。

我已经使用Aspose.Cells这种事情取得了很好的成功。 文档可能有点儿钝,但产品似乎工作。 它不会要求您在服务器上安装Excel,并且可以使用最新版本的Excel(以及之前的版本)。

使用Excel作为使用任何驱动程序(ODBC,OLEDB等)的ISAM数据库的问题是该列的数据types是基于列的前8行 – 这是纯粹的邪恶; 例如:如果一个列就像一个part#,前8个部分恰好只是数字,那么对于该列中不是数字的那个列中的任何单元格,您都会得到NULL。 (110000比111000-1或111000A)。 这对于如何在excel中格式化列(即使将列设置为文本)是没有任何限制的。

我会尝试find一个文件并更新。 这里有一个:

http://support.microsoft.com/kb/194124

http://msdn.microsoft.com/en-us/library/bb177610.aspx

你还有一些解决scheme。 1)Excel文件的第三方组件。 (我认为这是最痛苦和可靠的解决scheme)2)使用HTML表。


1)只要看看互联网:) 2)的Excel工作相当好的HTML表。 如果你生成这个html:

<html><body> <table> <tr><td><b>Column A</b></td><td><b>Column B</b></td></tr> <tr><td><font color="red">-154</b></td><td><font size="5">hello world</font></td></tr> </table> </body></html> 

当你格式化它时,excel将显示为工作表。 我认为,这是最普遍的办法,如何在互联网环境下创build“丰富”的excel工作表,而不需要在服务器上安装excel。

查看Excel Web Access ,它是MOSS中的Excel Services的一部分,它是Excel的服务器端版本,可让您通过Web浏览器计算和显示Excel信息。 MOSS概述页面描述了可以在服务器上提供Excelfunction的sharepoint框架。 您可以使用VSTO API以编程方式访问电子表格。

不知道这是否正是您所需要的,但肯定可能是: 4在Excel教程中编辑 (在.NET#5-8下)

你可能想看看http://www.gemboxsoftware.com/GBSpreadsheetFree.htm

他们有一个免费版本的所有function,但限制为每行150行,每张工作簿5张,如果这符合您的需求,否则付费版本的开发者授权将从$ 425开始。

还有其他答案可能适用于您在StackOverflow的问题:从C#中创buildExcel(.XLS和.XLSX)文件 。