C# 如何在不使用FileDialog的情况下从DataGridView导出数据?

C# 如何在不使用FileDialog的情况下从DataGridView导出数据?,c#,datagridview,export,export-to-excel,C#,Datagridview,Export,Export To Excel,我有一个叫做导出数据的按钮。当我点击这个按钮时,默认情况下数据应该存储在一个文件“abc.xls”中 我能够存储数据,但当我第二次尝试存储值时,我得到了COMException 有人能给我推荐一下吗 我不想要文件对话框。由于我使用的是默认文件,每次更改时都会覆盖该文件。提前谢谢 xlApp = new Microsoft.Office.Interop.Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSh

我有一个叫做导出数据的按钮。当我点击这个按钮时,默认情况下数据应该存储在一个文件“abc.xls”中

我能够存储数据,但当我第二次尝试存储值时,我得到了COMException

有人能给我推荐一下吗

我不想要文件对话框。由于我使用的是默认文件,每次更改时都会覆盖该文件。提前谢谢

xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = 
        (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
int i = 0;
int j = 0;
for (i = 0; i <= dataGridView1.RowCount - 1; i++)
 {
    for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
    {
      DataGridViewCell cell = dataGridView1[j, i];
      xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
    }
 }

xlWorkBook.SaveAs(@"C:\abc.xls", 
               Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, 
               misValue, misValue, misValue,
                 Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, 
                 misValue, misValue, misValue, misValue, misValue); 
                // A COMException is thrown here

 xlWorkBook.Close(true, misValue, misValue);
 xlApp.Quit();

 releaseObject(xlWorkSheet);
 releaseObject(xlWorkBook);
 releaseObject(xlApp);
xlApp=new Microsoft.Office.Interop.Excel.Application();
xlWorkBook=xlApp.Workbooks.Add(错误值);
工作表=
(Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_项(1);
int i=0;
int j=0;

对于(i=0;iSaying.xls和COMException,我怀疑您的意思是通过Excel COM automation进行保存。然后您将DisplayAlerts设置为false并使用SaveAs方法。即:

void Main()
{
    var f = new Form {Text = "Excel SaveAs sample"};
    var b = new System.Windows.Forms.Button {Text="Save as xls", AutoSize = true};
    var dgv = new DataGridView {Top=60};

    var tbl = new System.Data.DataTable();
    new SqlDataAdapter(
      "select CustomerId, CompanyName, ContactName from Customers", 
      @"server=.\SQLExpress;Database=Northwind;Trusted_Connection=yes")
      .Fill( tbl );

    dgv.DataSource = tbl;

    f.Controls.Add( b );
    f.Controls.Add( dgv );

    b.Click += (sender, args) => {
      var xl = new Microsoft.Office.Interop.Excel.Application();
      var wb = xl.Workbooks.Add();
      var sheet = (Worksheet)wb.ActiveSheet;

      for (int i = 0; i < dgv.Columns.Count; i++)
      {
        ((Range)sheet.Cells[1,i+1]).Value = dgv.Columns[i].HeaderText;
      }

      for (int i = 0; i < tbl.Rows.Count; i++)
      {
        for (int j = 0; j < tbl.Columns.Count; j++)
        {
          ((Range)sheet.Cells[i+2,j+1]).Value = dgv.Rows[i].Cells[j].Value.ToString();         
        }
      }
      xl.DisplayAlerts = false;
      wb.SaveAs(@"d:\temp\abc.xls");
      xl.Quit();
      MessageBox.Show("Saved");
    };

    f.Show();
}
void Main()
{
var f=新表格{Text=“Excel另存为样本”};
var b=new System.Windows.Forms.Button{Text=“另存为xls”,AutoSize=true};
var dgv=newdatagridview{Top=60};
var tbl=new System.Data.DataTable();
新的SqlDataAdapter(
“从客户中选择CustomerId、CompanyName、ContactName”,
@“服务器=。\SQLExpress;数据库=北风;受信任的连接=是”)
.填写(待定);
dgv.DataSource=tbl;
f、 增加(b);
f、 控件。添加(dgv);
b、 单击+=(发件人,参数)=>{
var xl=新的Microsoft.Office.Interop.Excel.Application();
var wb=xl.Workbooks.Add();
var sheet=(工作表)wb.ActiveSheet;
对于(int i=0;i
Post异常和您的“导出数据”方法