繁体   English   中英

使用C#写入Excel文件的最佳和最快的方法是什么?

[英]What is the best and fastest way to write into Excel file using C#?

我正在尝试使用OLEDB写入excel文件(没有自动化)。 我从其他应用程序获得了大约500行数据,然后使用“INSERT INTO ..”查询逐个写入Excel文件。 我确信从其他应用程序读取数据没有延迟。 我查了一下。 在大约3分钟内写入500行的excel文件所花费的总时间。 这太多了。 这绝对是因为文件写入操作。

什么是使这种速度快的最佳方法? 我应该使用其他一些技巧写作吗? 我应该尝试自动化技术吗?

http://support.microsoft.com/kb/306023此链接显示了许多技术,但不确定使用哪种技术。

如果你可以将COM转换为excel,你可以通过COM直接从excel查询,或创建一个数据数组并将其直接放入等于数组大小的范围内。 尽管excel对于小型COM调用并不是很好,但它很少用于大量的COM调用:)

DataSet ds = new DataSet();
          da.Fill(ds);
          int width = ds.Tables[0].Columns.Count;
          int height = ds.Tables[0].Rows.Count;
          object[,] retList = new object[height, width];
          for (int i = 0; i < height; i++)
          {
            DataRow r = ds.Tables[0].Rows[i];
            for (int j = 0; j < width; j++)
              retList[i, j] = r.ItemArray[j];
          }
          Excel.Range range = mWs.get_Range(destination, mWs.Cells[destination.Row + height - 1, destination.Column + width - 1]);
          range.set_Value(Missing.Value, retList);
          System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
          range = null;

这是一个获取数据并在一次COM调用中将其作为数组插入excel的示例

Excel已经提供了以XML格式读取/写入数据所需的一切。

我偶尔使用过SpreadsheetML格式,它对我来说效果很好。 使用它,您可以写出一个xml格式的文档,并使用.xls扩展名命名。 大多数excel功能都可用。 Microsoft的参考文档就在这里 Google提供各种语言的教程,如RailsPHP Excel Hacks这本书也谈到了它。

如果它只是数据,则可以使用CSV文件导入。 在代码中创建文件并使用自动化使Excel导入文件。

更新:写完这篇文章后,我喜欢@ MicTech的建议 ,我不知道。

我们使用SpreadsheetGear

我推荐了FlexCel库,但它不是免费的:(

但是,如果您想要Office Open XML格式,可以使用http://excelpackage.codeplex.com/

您是在寻找一次性转储到Excel还是保持连接并将数据多次推送到Excel?

如果您想要多次将数据推送到Excel,您应该调查制作RTD服务器,我已经多次使用它们并且它们使用RTD服务器

如果您正在寻找一次推送到Excel,您需要使用COM。 使用COM和C#

C#版本4对托管COM进行了一些很好的改进,在使用Excel时不再需要主互操作程序集。 C#4尚未投入生产,但如果它适合您,您可以下载它的测试版。

我们使用aspose细胞。 它非常易于使用,速度快,没​​有明显的问题。

http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default.aspx

快速而肮脏的方法是创建一个包含表格数据的HTML表格,然后用.xls扩展名保存。 它工作,并将在Excel中打开。

那么,编写Excel的最基本(也是最复杂)的方法是按照BIFF格式创建二进制文件。 使用BIFF格式,您需要概述Excel文件的结构。 它非常复杂,但您可以基于每个单元控制写入内容。

将DataSet导出到Excel文件中还有其他CodeProject示例。 请记住,创建一个遵循Excel XML格式的XML文件。 它还基于每个单元写入。 看着:

http://www.codeproject.com/KB/office/ExportDataSetToExcel.aspx

“写入”Excel的另一种方法是将数据创建为HTML页面并加载它。 Excel实际上可以读取HTML。 通过html执行此操作的一个好处是,您可以使用CSV格式化数据。

但是,如果您只导出简单数据(小文本字段和数字),请使用CSV。

我一直在使用Aspose.Cells库,非常成功地编写Excel文件。 它远非便宜。

这个库是免费的,并且非常快速地创建xls文件,如果你没有安装MS Office,它也可以工作。 http://code.google.com/p/excellibrary/downloads/list

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM