winform中 如何读取Excel文件,之后再把它写入一个新的Excel文件

本文介绍了一种使用C#将DataSet中的数据导入到Excel文件的方法,包括创建Excel文件、设置列标题及填充数据等步骤。
把数据读出Excle:
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Application.Workbooks.Add(true);

    for (int i = 1; i <= ds.Tables[0].Columns.Count; i++)
          {
              excel.Cells[1, i] = ds.Tables[0].Columns[i - 1].ColumnName.ToString();
          }
    for (int i = 2; i <= ds.Tables[0].Rows.Count + 1; i++)
          {
                for (int j = 1; j <= ds.Tables[0].Columns.Count; j++)
               {
                     excel.Cells[i, j] = ds.Tables[0].Rows[i - 2][j - 1].ToString();
               }
          }
    excel.Visible = true;

把数据导入Excle:
 public void DBWriteToExcel(DataSet myds)
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.InitialDirectory = Application.ExecutablePath;
            saveFileDialog1.Filter = "Microsoft Office Excel 工作薄(*.xls)|*.xls";
            saveFileDialog1.OverwritePrompt = true;
            saveFileDialog1.FileName = "客服日报查询结果";//dtpBegin.Text + "至" + dtpEnd.Text + "客服日报查询结果";
            if ((saveFileDialog1.ShowDialog()) == DialogResult.OK)
            {              
                FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
                StreamWriter writer = new StreamWriter(fs, Encoding.Unicode);
                try
                {
                    //取得数据表各列标题,各标题之间以/t分割,最后一个列标题后加回车符  
                    StringBuilder colHeaders = new StringBuilder();
                    for (int i = 0; i < myds.Tables[0].Columns.Count; i++)
                    {
                        colHeaders.Append(myds.Tables[0].Columns[i].Caption.ToString() + "/t");
                        //colHeaders += myds.Tables[0].Columns[i].Caption.ToString() + "/t";
                    }
                    colHeaders.Append("/n");
                    //输出流中写入取得的数据信息  
                    writer.Write(colHeaders.ToString());
                    //逐行处理数据 
                    StringBuilder ls_item = new StringBuilder();
                    for (int i = 0; i < myds.Tables[0].Rows.Count; i++)
                    {
                        for (int j = 0; j < myds.Tables[0].Columns.Count; j++)
                        {
                            ls_item.Append(myds.Tables[0].Rows[i][j].ToString().Replace("/n", "").Replace("/t", "") + "/t"); ;
                        }
                        ls_item.Append("/n");
                    }
                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据                                                  
                    writer.Write(ls_item.ToString());
                }
                catch (Exception excep)
                {
                    MessageBox.Show(excep.Message);
                }
                finally
                {
                    writer.Flush();
                    writer.Close();
                    fs.Close();
                }
            }
        }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值