如何将数据从数据集传输到现有的excel表单's具有特定行和列的特定工作表

本文关键字:工作 表单 数据 数据集 传输 excel | 更新日期: 2023-09-27 18:03:20

我正在做一个项目,我必须从DBASE文件中获取数据,然后导出数据excel form

excel form有超过10个工作表有按钮添加行。

我使用OLEDBdbase文件中检索到所需格式的数据(如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.

我希望我解释了我的问题。

如何将数据从数据集传输到现有的excel表单's具有特定行和列的特定工作表

下面的答案可能不满足你的确切要求,但请验证一下。对不起,因为我忙于我现有的工作,所以回复晚了。

下面的代码我已经在我的一个桌面应用程序中使用。希望能对你有所帮助。

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链接。

好运…