【发布时间】:2017-03-16 18:26:11
【问题描述】:
我正在尝试将从 SQL Server 提取的数据填充到 Excel 2010 中。下面的代码工作正常,但困难在于我没有以编程方式创建 Excel 电子表格,它已经存在,我提出了一个请求通过用 C# 编写的 Excel 中的插件获取数据。 即使我将光标设置为 A10 单元格,Excel 也会从第一个单元格开始填写数据并覆盖标题(已经存在)。请帮忙修复。 代码:
OdbcConnection cnn;
cnn = new OdbcConnection(azureConn);
using (OdbcCommand command = cnn.CreateCommand())
{
command.CommandText = "{call sp_Get_Excel_Data(?,?,?,?,?,?,?,?)}";
command.Parameters.AddWithValue("@StartDate", startDate);
command.Parameters.AddWithValue("@EndDate", endDate);
command.Parameters.AddWithValue("@startTime", startTime);
command.Parameters.AddWithValue("@endTime", endTime);
command.Parameters.AddWithValue("@smp", smp);
command.Parameters.AddWithValue("@Reg", reg);
command.Parameters.AddWithValue("@event", events);
command.Parameters.AddWithValue("@userId", userId);
cnn.Open();
//DataTable
OdbcDataAdapter adapter = new OdbcDataAdapter(command);
//DataSet
DataSet ds = new DataSet();
adapter.Fill(ds);
//Cast to DataTable
DataTable dataTable = ds.Tables[0];
string[] colNames = new string[dataTable.Columns.Count];
int col = 0;
foreach (DataColumn dc in dataTable.Columns)
colNames[col++] = dc.ColumnName;
w = this.Application.ActiveWorkbook;
ws = (Worksheet)w.ActiveSheet;
Range hdrRow = (Range)ws.Rows[9];
hdrRow.Value = colNames;
hdrRow.Font.Bold = true;
hdrRow.VerticalAlignment = XlVAlign.xlVAlignCenter;
//Position the cursor
var range = ws.get_Range("A10");
range.Select();
//Inserting the Column and Values into Excel file
string data = null;
int i = 0;
int j = 0;
for (i = 0; i <= dataTable.Rows.Count - 1; i++)
{
for (j = 0; j <= dataTable.Columns.Count - 1; j++)
{
data = dataTable.Rows[i].ItemArray[j].ToString();
ws.Cells[i + 2, j + 1] = data;
}
}
【问题讨论】: