c#导出DataGridView内容

c#导出DataGridView内容,c#,datagridview,export,C#,Datagridview,Export,我从datagridview导出一些虚拟数据,例如“1.000” private void btnSaveCalibTable\u单击(对象发送方,事件参数e) { SaveFileDialog sfd=新建SaveFileDialog(); sfd.Filter=“文本文件(*.txt)|*.txt|所有文件(*.*)|*.”; if(sfd.ShowDialog()==DialogResult.OK) { System.IO.StreamWriter文件=新建 System.IO.Strea

我从datagridview导出一些虚拟数据,例如“1.000”

private void btnSaveCalibTable\u单击(对象发送方,事件参数e)
{
SaveFileDialog sfd=新建SaveFileDialog();
sfd.Filter=“文本文件(*.txt)|*.txt|所有文件(*.*)|*.”;
if(sfd.ShowDialog()==DialogResult.OK)
{
System.IO.StreamWriter文件=新建
System.IO.StreamWriter(@“C:\Users\Desktop\\sample.txt”);
尝试
{
字符串sLine=“”;

for(int i=0;i正确格式化数字将取决于基础单元格数据类型

要格式化数字,
String.format(..)
方法工作良好。但是,如果单元格数据类型为
String
,则可能需要将字符串转换为
十进制

例如,如果单元格是
decimal
类型的单元格,则可以使用

sLine += String.Format("{0:0.000}", (decimal)dgvSensorCalibTable.Rows[i].Cells[j].Value);
同样,这假设基础数据是
decimal
类型

此外,为了避免在结尾处出现多余的逗号(,)

string formattedLine = String.Format("{0:0.000}", (decimal)dgvSensorCalibTable.Rows[i].Cells[j].Value);
sLine += formattedLine;
if (j < dgvSensorCalibTable.Columns.Count - 1) {
  sLine += ",";
}
string formattedLine=string.Format(“{0:0.000}”,(十进制)dgvSensorCalibTable.Rows[i].Cells[j].Value);
sLine+=格式化线;
if(j

…是MS文档,有大量使用
String.Format
方法的信息和示例。

“指定的强制转换无效”,这是我得到的。正如我在回答中所述,这将取决于网格中基础数据的“类型”。您的问题没有指定单元格的“类型”是。数据是如何放入网格的?它是什么“类型”的?我知道你说这是“虚拟数据”,但是,当使用“非虚拟数据”时,它是什么“类型”的?如果数据是“类型”
string
,那么,你可能需要将字符串解析为一些数值。不清楚“真实”是什么数据可能是。此外,如果当前代码(使用虚拟数据)只是简单地将文本字符“1”添加到单元格中,那么您不能简单地将“1”更改为“1.000”吗?我感觉数据是“数字”的类型。这是未知的。它可能有助于描述如何将非虚拟数据输入到网格中,特别是要格式化的单元格的“类型”。
string formattedLine = String.Format("{0:0.000}", (decimal)dgvSensorCalibTable.Rows[i].Cells[j].Value);
sLine += formattedLine;
if (j < dgvSensorCalibTable.Columns.Count - 1) {
  sLine += ",";
}