如何将数据从数据集传输到现有的excel表单's具有特定行和列的特定工作表
本文关键字:工作 表单 数据 数据集 传输 excel | 更新日期: 2023-09-27 18:03:20
我正在做一个项目,我必须从DBASE
文件中获取数据,然后导出数据excel form
。
excel form
有超过10个工作表有按钮添加行。
我使用OLEDB
从dbase
文件中检索到所需格式的数据(如excel form
所要求的)。
现在的问题是如何从数据表发送数据到excel表格特定的工作表所需的行和列。
我怎么能发送命令到工作表的按钮添加所需的行?
这就是我如何从数据库文件中获取数据并将其存储到一个数据表中。
private void button1_Click(object sender, EventArgs e)
{
string a = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:''vat;Extended Properties =dBASE IV; User ID = Admin ;Password =";
OleDbConnection con = new OleDbConnection();
con.ConnectionString = a;
con.Open();
//MessageBox.Show(con.State.ToString());
string qu = "Select * from abc.dbf ";
OleDbDataAdapter oda = new OleDbDataAdapter(qu, con);
DataTable dt = new DataTable();
oda.Fill(dt);
this.dataGridView1.DataSource = dt;
}
有这么多的例子,有从数据表导出数据到excel,但几乎在每个例子都创建一个新的excel表格。我必须导出到一个现有的excel表格,其中包含近10张表。现在我想插入的数据表内容,以excel表命名为ABC.XLS和工作表名称是A.
我希望我解释了我的问题。
下面的答案可能不满足你的确切要求,但请验证一下。对不起,因为我忙于我现有的工作,所以回复晚了。
下面的代码我已经在我的一个桌面应用程序中使用。希望能对你有所帮助。
public static void ExportToExcel(DataTable dt)
{
Microsoft.Office.Interop.Excel.Application excelApp = null;
try
{
// instantiating the excel application class
excelApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook currentWorkbook = excelApp.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel.Worksheet currentWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)currentWorkbook.ActiveSheet;
currentWorksheet.Columns.ColumnWidth = 18;
if (dt.Rows.Count > 0)
{
currentWorksheet.Cells[1, 1] = DateTime.Now.ToString("s");
int i = 1;
foreach (DataColumn dtColumn in dt.Columns)
{
// Excel work sheet indexing starts with 1
currentWorksheet.Cells[2, i] = dtColumn.Name;
++i;
}
Microsoft.Office.Interop.Excel.Range headerColumnRange = currentWorksheet.get_Range("A2", "G2");
headerColumnRange.Font.Bold = true;
headerColumnRange.Font.Color = 0xFF0000;
//headerColumnRange.EntireColumn.AutoFit();
int rowIndex = 0;
for (rowIndex = 0; rowIndex < dt.Rows.Count; rowIndex++)
{
DataRow row = dt.Rows[rowIndex];
for (int cellIndex = 0; cellIndex < row.Cells.Count; cellIndex++)
{
currentWorksheet.Cells[rowIndex + 3, cellIndex + 1] = row.Cells[cellIndex].Value;
}
}
Microsoft.Office.Interop.Excel.Range fullTextRange = currentWorksheet.get_Range("A1", "G" + (rowIndex + 1).ToString());
fullTextRange.WrapText = true;
fullTextRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
}
else
{
string timeStamp = DateTime.Now.ToString("s");
timeStamp = timeStamp.Replace(':', '-');
timeStamp = timeStamp.Replace("T", "__");
currentWorksheet.Cells[1, 1] = timeStamp;
currentWorksheet.Cells[1, 2] = "No error occured";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (excelApp != null)
{
excelApp.Quit();
}
}
}
请参考此MSDN链接。
好运…