我目前正在开发一个项目,用于遍历excel文档并使用C#将数据插入数据库。
该项目的相关数据是:
第1页
USA China Russia
Date Value Date Value Siberia
1/1/09 4.3654 1/1/09 2.7456 Date Value
1/2/09 3.5545 1/3/09 9.3214 2/5/09 0.2454
1/3/09 3.2322 1/21/09 5.2234 2/6/09 0.5557
我目前的计划是:
我的问题是:
对于仍在阅读的人,谢谢你的时间。有关如何进行的任何建议?请确保解决方案可以遍历每列,而不是每行。
另外,请不要担心数据库内容或遍历之前的名称列表。
附录:我最想得到的是某种类型的表格,我可以使用嵌套循环进行遍历,使以列为中心的遍历变得更加容易。因为在纸张顶部附近有很多垃圾(14行以上),所以大多数简单的解决方案都不可行。
答案 0 :(得分:3)
如果你想在C#中读取excel,我已经非常成功地使用了这个库,它会让你灵活地解析列/行,只是你想要:
我还没有使用过的其他开源库但可能很好:
或者,您可以使用许多优秀的Java库之一,并使用IKVM将其转换为C#程序集:
我已经介绍了如何使用IKVM Java - > C#转换在这里(它真的不像你想象的那么可怕):
答案 1 :(得分:0)
我强烈建议您在使用CSV格式之前保存此Excel文档。您可以使用this code 拥有CSV后,您可以使用该库解析它,也可以为它编写自己的解析器。
答案 2 :(得分:0)
不是你问题的直接答案,而是另一个想法:
您的数据看起来像一个pivot-ish表。我建议将它“解开”到简单的表格中。
示例:
Russia USA
Q1 123 323
Q2 456 321
Q3 567 843
变为:
Quarter Country Value
Q1 Russia 123
Q1 USA 323
Q2 Russia 321
....
如果是这种情况,不确定我是否在你的问题中做到了这一点,而不是使用OleDB驱动程序或任何CSV类型的东西处理数据应该变得更加痛苦。
答案 3 :(得分:0)
您可以通过ODBC驱动程序使用ADO.NET直接访问Excel。有关如何执行此操作的详细信息,请参阅http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx或Google。您可能希望在连接字符串中尝试 HDR =否,因为它的第一行不是真正合适的标题。
我暂时没有这样做,但是我记得它有点“气质”并且需要一些游戏以使列名正确,但它应该有效。试试SELECT * FROM [Sheet1$]
,看看你得到了什么。
答案 4 :(得分:0)
正如我之前所做的那样,我更喜欢使用OLEDB连接来连接到Excel文档。
顺便说一句,您可以查看以下文章以获取更多信息: http://www.codeproject.com/KB/office/excel_using_oledb.aspx
答案 5 :(得分:0)
SpreadsheetGear for .NET可以按任意顺序加载工作簿并访问任何工作表上的任何单元格。您可以获取单元格的格式化文本(例如“1/1/09”)或基础值(“1/1/09”在Excel或SpreadsheetGear中存储为double 39814.0)。
如果您想亲自试用,可以查看一些实时ASP.NET样本here并下载免费试用here。
免责声明:我拥有SpreadsheetGear LLC