使用Excel电子表格作为报表查看器的数据源c#

我试图使用Visual Studio提供的reportviewer (Windows窗体应用程序)来创build一个基于Excel电子表格的报表。 但是,我正在努力find正确的方式来读取/访问电子表格。

当我尝试创build一个新的报告时,我得到以下窗口:

新的报告数据源

我试图使用对象选项,但没有任何运气

问题:如何使用Excel电子表格创build报告?

我有一些幸运的下面的代码,允许我处理文件,但我不能find一种方法将其绑定到reportviewer:

 Excel.Application ExcelObj = new Excel.Application(); this.openFileDialog1.FileName = "*.xls"; if (this.openFileDialog1.ShowDialog() == DialogResult.OK) { Excel.Workbook theWorkbook = ExcelObj.Workbooks.Open( openFileDialog1.FileName, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true); Excel.Sheets sheets = theWorkbook.Worksheets; Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1); for (int i = 1; i <= 10; i++) { Excel.Range range = worksheet.get_Range("A" + i.ToString(), "J" + i.ToString()); System.Array myvalues = (System.Array)range.Cells.Value; string[] strArray = ConvertToStringArray(myvalues); } } 

任何build议/指导是受欢迎的

经过大量的search,我设法把它拼凑起来,把excel表格写成基本的报告。

这要求您设置一个数据集,其中包含在Excel电子表格的第一行中指定的列名,并将此数据集绑定到报表中。 然后你可以使用以下来填充它:

 [open file dialog code..] try { string path = this.openFileDialog1.FileName; if (Path.GetExtension(path) == ".xls") { oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""); } else if (Path.GetExtension(path) == ".xlsx") { oledbConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';"); } oledbConn.Open(); DataSet ds = new DataSet(); OleDbCommand cmd = new OleDbCommand(); cmd.Connection = oledbConn; cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM [sheet1$]"; OleDbDataAdapter oleda = new OleDbDataAdapter(); oleda = new OleDbDataAdapter(cmd); oleda.Fill(ds); ds.Tables[0].TableName = "DataTable1"; this.DataTable1BindingSource.DataSource = ds; this.reportViewer1.RefreshReport(); } catch (Exception ex) { } finally { oledbConn.Close(); } 

我发现这些文章很有帮助:

Dyanmic报告来源

将excel加载到数据集中

您可以查询这个问题中提到的数据。

在Excel中查询Excel表格

但我build议尝试创build一个进程,从Excel文件中获取数据,并移动到SQL Server或任何正式的数据库。 在这个过程中,您可以validation数据格式并消除错误。

对于Visual Studio的某些部分,电子表格通过select数据库作为数据源连接。 ODBC驱动程序允许将多种数据库(包括Excel电子表格文件)用作数据源。

问题中显示的图像与Visual Studio 2010中可用于编码UI的数据源向导非常相似。该向导在Visual Studio 2012中未提供,人们必须手动编写连接string。 这个页面显示了用于Visual Studio 2013上的编码UI的连接string。 这个较早的页面 (2009年3月)有一个类似的连接string列表,并链接到这个2005页面 ,它提供了更多的连接string。