写数据到Excel - c#
本文关键字:Excel 数据 | 更新日期: 2023-09-27 18:18:22
我需要将数据写入excel表格,并需要在写入后打开它。这是我正在使用的代码…
object misValue = System.Reflection.Missing.Value;
Excel.Application xlAppEnv = new Excel.ApplicationClass();
Excel.Workbook xlForEnv = xlAppEnv.Workbooks.Add(misValue);
Excel.Worksheet xlForEnv_View = (Excel.Worksheet)xlForEnv.Worksheets.get_Item(1);
xlForEnv_View.Name = "PF Keys";
xlForEnv_View.Cells[row, column] = "data";
我可以使用上面的代码写入数据,当我完成后,我可以使用下面的代码将文件保存到预定义的位置。
envSaveLoc = envSaveLoc + "''PF Keys.xlsx";
xlForEnv.SaveAs(envSaveLoc, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlAppEnv.DisplayAlerts = true;
xlForEnv.Close(true, misValue, misValue);
xlAppEnv.Quit();
上面的代码工作得很好,但是现在的要求是程序不应该保存它,但是一旦数据写入excel表,在excel中打开文件并呈现给用户。然后,用户可以使用文件->另存为选项自行查看和保存。我怎样才能实现它?数据可以存储在某个临时位置以便呈现给用户。
使用
直接显示Excel应用程序窗口怎么样?xlAppEnv.Visible = true;
这应该显示Excel窗口与所有你写的数据,让用户决定如何继续。
这是我用来运行SQL查询并将返回的结果存储在数据集中,然后将数据集写入Excel的方法。从那里你可以做任何你想做的事情,保存/打印/convertoPDF等等
int i = 0;
int j = 0;
_Workbook workbooksExcel;
Worksheet worksheet;
Excel._Application docExcel;
//This will run a SQL Query and write results to DataSet
SqlConnection conn;
string sql = null;
object misValue = System.Reflection.Missing.Value;
docExcel = null;
string ConnectionString = "Data Source=DS;Initial Catalog=TestDB;User ID = sa;Integrated Security=True;MultipleActiveResultSets=True";
conn = new System.Data.SqlClient.SqlConnection(ConnectionString);
conn.Open();
sql = "Insert SQL Statement Here";
System.Data.SqlClient.SqlDataAdapter dscmd = new System.Data.SqlClient.SqlDataAdapter(sql, conn);
ds = new DataSet();
dscmd.Fill(ds);
conn.Close();
//Here is where the above SQL Statement will write to Excel
for (i = 0; i <= SQLConnection.ds.Tables[0].Rows.Count - 1; i++)
{
for (j = 0; j <= SQLConnection.ds.Tables[0].Columns.Count - 1; j++)
{
try
{
data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
_Workbook workbooksExcel = docExcel.ActiveWorkbook;
Worksheet sheetExcel = (Worksheet)workbooksExcel.ActiveSheet;
sheetExcel.Cells[i + 2, j + 1].Value = data;
}
catch (Exception ex) { }
}
}