如何读取excel(.xlsm)文件,该文件通过C#使用finansu加载项

时间:2014-08-28 12:11:56

标签: c# .net excel

我有一个excel(.xlsm)文件,通过excel加载项“finansu”更新股票市场实时数据。 当我尝试通过股票名称列中的C#应用​​程序读取Excel数据时,它显示正确的股票名称,但在值列中它不显示任何内容。该股票价值列通过finansu加载项更新实时值。

请帮助我阅读这些值。 提前谢谢。

以下是源代码:

connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended   Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";"; 

query = "SELECT * FROM [RealTime$]"; 
conn = new OleDbConnection(connString); 

 if (conn.State == ConnectionState.Closed) 
   conn.Open(); 

cmd = new OleDbCommand(query, conn); 
 da = new OleDbDataAdapter(cmd); 
 dt = new System.Data.DataTable(); 
 da.Fill(dt);

1 个答案:

答案 0 :(得分:2)

OLEDB无法检索您想要的数据。我不熟悉finansu加载项,但Excel Interop应该能够得到你需要的东西。

Microsoft.Office.Interop.Excel

示例代码:

using Microsoft.Office.Interop.Excel;
using System;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            var filename = @"C:\temp\Book1.xlsx";
            var excel = new Microsoft.Office.Interop.Excel.Application();

            var wb = excel.Workbooks.Open(filename);
            Worksheet realtime = wb.Sheets["RealTime"];

            foreach (Range row in realtime.UsedRange.Rows)
            {
                Console.WriteLine("{0}", row.Cells[1, 1].Value); // Column A
                Console.WriteLine("{0}", row.Cells[1, 2].Value); // Column B
                // etc ...
            }

            wb.Close(SaveChanges: false);
        }
    }
}