我有excel文件,它在标题中有导出按钮。当我们打开excel并点击导出时,宏会在后台运行,并将excel导出到某个位置。
我正在编写C#winform应用程序,它是这个excel文件的包装器。这个winform应用程序有Export按钮。当用户点击winform按钮C#代码应打开excel文件并以编程方式单击excel文件中的导出按钮并导出文件。
我正在使用OLEDBConnection来连接excel文件。如何使用C#单击excel文件中的按钮?
我有代码从excel读取数据。
private void CreateConnectionString()
{
ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + file + ";Extended Properties="
+ "\"Excel 12.0 Xml;HDR=YES;IMEX=3;READONLY=FALSE\"";
}
private void ReadDataFromExcelAndShowInGrid()
{
DataSet dataSet = new DataSet();
string sql = "Select * From [TimeSheet$]";
using (OleDbConnection cn = new OleDbConnection(ConnectionString))
{
using (OleDbDataAdapter adapter = new OleDbDataAdapter(sql, cn))
{
adapter.Fill(dataSet, "Data");
}
}
DataRowCollection dataRows = dataSet.Tables["Data"].Rows;
for (int i = 0; i < dataRows.Count; ++i)
{
string cDateTime = ConvertAndReturnStringToDateTime(dataRows[i].ItemArray[0].ToString(), "MM-dd-yyyy");
if (cDateTime != string.Empty)
{
if (EndOfWeek.Equals(cDateTime))
{
var date = ConvertAndReturnStringToDateTime(dataRows[i].ItemArray[1].ToString(), "dd-MM-yyyy");
var start = ConvertAndReturnStringToDateTime(dataRows[i].ItemArray[2].ToString(), "dd-MM-yyyy hh:mm:ss");
var stop = ConvertAndReturnStringToDateTime(dataRows[i].ItemArray[3].ToString(), "dd-MM-yyyy hh:mm:ss");
table.Rows.Add(cDateTime, date,
start, stop,
dataRows[i].ItemArray[4].ToString(), dataRows[i].ItemArray[5].ToString(),
dataRows[i].ItemArray[6].ToString(), dataRows[i].ItemArray[7].ToString(),
dataRows[i].ItemArray[8].ToString());
}
}
}
}
private string ConvertAndReturnStringToDateTime(string dateTimeFromFile, string dateFormat)
{
string dateTime = string.Empty;
double fileDateweek = 0.0d;
if (double.TryParse(dateTimeFromFile, out fileDateweek))
{
dateTime = DateTime.FromOADate(fileDateweek).ToString(dateFormat);
}
return dateTime;
}