我尝试使用Visual Studio提供的reportviewer
(Windows窗体应用程序)来创建基于Excel电子表格的报告。但是,我很难找到正确的方式来阅读/访问电子表格。
当我尝试创建新报告时,我会看到以下窗口:
我试过使用对象选项,但没有运气
问题:如何使用Excel电子表格创建报告?
我对下面的代码运气不错,这让我可以处理文件,但我找不到将它绑定到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);
}
}
欢迎任何建议/指导
答案 0 :(得分:6)
经过大量的谷歌搜索后,我成功地将其拼凑起来并将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();
}
我发现这些文章很有帮助:
答案 1 :(得分:2)
对于Visual Studio的某些部分,通过选择数据库将电子表格作为数据源连接。 ODBC驱动程序允许将许多种数据库(包括Excel电子表格文件)用作数据源。
问题中显示的图像与Visual Studio 2010中可用于编码UI的数据源向导非常相似.Visual Studio 2012中未提供该向导,人们必须手动编写连接字符串。 This page显示在Visual Studio 2013上用于Coded UI的连接字符串。This earlier page(2009年3月)有一个类似的连接字符串列表,它链接到this 2005 page,它提供了更多的连接字符串
答案 2 :(得分:2)
您可以在此问题中查询数据。
但我建议尝试创建一个进程以从excel文件中获取数据并移至sql server或任何正式数据库。在此过程中,您可以验证数据格式并消除错误。