下面这是个用流来导出excel的方法。
public void SaveAs(DataGridView dgv)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Excel files (*.xls)|*.xls";
sfd.FilterIndex = 0;
sfd.RestoreDirectory = true;
sfd.CreatePrompt = true;
sfd.Title = "Export Excel File To";
sfd.ShowDialog();
Stream myStream;
myStream = sfd.OpenFile();
StreamWriter sw = new StreamWriter(myStream,System.Text.Encoding.GetEncoding(-0)); string str = "";
//写标题
for (int i = 0; i < dgv.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
} str += dgv.Columns[i].HeaderText;
sw.WriteLine(str);
} //写内容
for (int j = 0; j < dgv.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dgv.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
if (dgv.Rows[j].Cells[k] != null)
{
tempStr += dgv.Rows[j].Cells[k].Value.ToString();
问题:这一句抛出异常。异常信息:未将对象引用设置到对象的实例。 其实在这里的判断不为空是在下加上去的,但是没解决问题。 根据追踪的信息: 应该是当读DGV中的有数据的行时,是正常的。但是一旦读到头,则发生异常。也不知道是怎么回事?问题二:在这里再多说一句用流导出Excel和用Excel组件相比,那个比较好点呢?
}
else
{
continue;
}
}
sw.WriteLine(tempStr); }
sw.Close();
myStream.Close();
//catch (Exception e)
//{
// MessageBox.Show(e.ToString());
//}
//finally
//{
// sw.Close();
// myStream.Close();
//}
}
public void SaveAs(DataGridView dgv)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Excel files (*.xls)|*.xls";
sfd.FilterIndex = 0;
sfd.RestoreDirectory = true;
sfd.CreatePrompt = true;
sfd.Title = "Export Excel File To";
sfd.ShowDialog();
Stream myStream;
myStream = sfd.OpenFile();
StreamWriter sw = new StreamWriter(myStream,System.Text.Encoding.GetEncoding(-0)); string str = "";
//写标题
for (int i = 0; i < dgv.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
} str += dgv.Columns[i].HeaderText;
sw.WriteLine(str);
} //写内容
for (int j = 0; j < dgv.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dgv.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
if (dgv.Rows[j].Cells[k] != null)
{
tempStr += dgv.Rows[j].Cells[k].Value.ToString();
问题:这一句抛出异常。异常信息:未将对象引用设置到对象的实例。 其实在这里的判断不为空是在下加上去的,但是没解决问题。 根据追踪的信息: 应该是当读DGV中的有数据的行时,是正常的。但是一旦读到头,则发生异常。也不知道是怎么回事?问题二:在这里再多说一句用流导出Excel和用Excel组件相比,那个比较好点呢?
}
else
{
continue;
}
}
sw.WriteLine(tempStr); }
sw.Close();
myStream.Close();
//catch (Exception e)
//{
// MessageBox.Show(e.ToString());
//}
//finally
//{
// sw.Close();
// myStream.Close();
//}
}
这里的值是不是空值,你看了没有,调试一下!!看看
用EXCE控件生成EXCEL,要安装ms office
容易控制导出的Excel的样式
何为“ms office”?
我晕一个先 微软的office你不知道。