C# 如何在不使用FileDialog的情况下从DataGridView导出数据?
我有一个叫做导出数据的按钮。当我点击这个按钮时,默认情况下数据应该存储在一个文件“abc.xls”中 我能够存储数据,但当我第二次尝试存储值时,我得到了COMException 有人能给我推荐一下吗 我不想要文件对话框。由于我使用的是默认文件,每次更改时都会覆盖该文件。提前谢谢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
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异常和您的“导出数据”方法