我正在尝试使用Visual Studio(Windows窗体应用程序)提供的
reportviewer
来创建基于Excel电子表格的报告。然而,我正在努力寻找读取/访问电子表格的正确方法。
当我尝试创建新报告时,我会看到以下窗口:
我尝试过使用对象选项,但没有任何运气
问题: 如何使用 Excel 电子表格创建报告?
我很幸运地使用了以下代码,这使我能够处理该文件,但我找不到将其绑定到报告查看器中的方法:
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);
}
}
欢迎任何建议/指导
经过大量谷歌搜索后,我设法将其拼凑在一起,并将 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();
}
我发现这些文章很有帮助:
您可以查询这个问题中提到的数据。
但我建议尝试创建一个过程来从 Excel 文件获取数据并移动到 SQL Server 或任何正式数据库。在此过程中您可以验证数据格式并消除错误。
对于 Visual Studio 的某些部分,通过选择 Database 将电子表格连接为数据源。 ODBC 驱动程序允许将多种数据库(包括 Excel 电子表格文件)用作数据源。
问题中显示的图像看起来与 Visual Studio 2010 中可用于编码 UI 的数据源向导非常相似。Visual Studio 2012 中未提供该向导,人们必须手动编写连接字符串。 此页面显示用于 Visual Studio 2013 上的编码 UI 的连接字符串。此较早的页面(日期为 2009 年 3 月)具有类似的连接字符串列表,它链接到 此 2005 年页面,其中提供了更多连接字符串。
我有一个令人兴奋的消息要告诉你。现在,您可以尝试“[ZetExcel.com]”从头开始创建 Excel 工作表! 问候, 柯克·李