各位 我把datagridview里面的数据遍历 输出到txt 的时候 发现输出来的数据对不整齐 网上又找了些资料看了看 发现用PadRight()方法可以,但是又遇见个问题:
汉字占得应该是2个字符 但是输出来的时候按照一个汉字一个字符的输出的,这样用PadRight() 假设输出20个字符 不够的用空白补 应该是这样的吧:
xx.PadRight(20) 但是输出的还是对不整齐 ,原因我也知道了,主要是汉字本来占两个字符的 不知道怎么的 Pad的时候算一个字符 这样 就会错乱我把代码发下 大家帮我看下!谢谢了!我该怎么解决这个问题啊? string strLine = "";
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
string id = dataGridView1.Rows[i].Cells[0].Value.ToString();
string name = dataGridView1.Rows[i].Cells[1].Value.ToString();
string sex = dataGridView1.Rows[i].Cells[2].Value.ToString();
string department = dataGridView1.Rows[i].Cells[3].Value.ToString();
strLine += id.PadRight(20);
strLine += name.PadRight(20);
strLine += sex.PadRight(20);
strLine += department.PadRight(20);
sw.WriteLine(strLine);//循环读取datagridview单元格内容 写进文件
strLine = "";
}
汉字占得应该是2个字符 但是输出来的时候按照一个汉字一个字符的输出的,这样用PadRight() 假设输出20个字符 不够的用空白补 应该是这样的吧:
xx.PadRight(20) 但是输出的还是对不整齐 ,原因我也知道了,主要是汉字本来占两个字符的 不知道怎么的 Pad的时候算一个字符 这样 就会错乱我把代码发下 大家帮我看下!谢谢了!我该怎么解决这个问题啊? string strLine = "";
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
string id = dataGridView1.Rows[i].Cells[0].Value.ToString();
string name = dataGridView1.Rows[i].Cells[1].Value.ToString();
string sex = dataGridView1.Rows[i].Cells[2].Value.ToString();
string department = dataGridView1.Rows[i].Cells[3].Value.ToString();
strLine += id.PadRight(20);
strLine += name.PadRight(20);
strLine += sex.PadRight(20);
strLine += department.PadRight(20);
sw.WriteLine(strLine);//循环读取datagridview单元格内容 写进文件
strLine = "";
}
{
Encoding encoding = Encoding.UTF8;
int tmp = encoding.GetByteCount(str);
for(int i = 0;i<len - tmp;i++)
{
str += " ";
}
return str;
}
例如代码块:StreamWriter sw;
try
{
if (File.Exists(myPath))
{
sw = new StreamWriter(myPath, true, Encoding.GetEncoding("GB2312")); sw.WriteLine(myData); }
else
{
sw= File.CreateText(myPath);
} sw.Close(); sw.Dispose();
}
catch(Exception ex)
{
sw = null; MessageBox.Show("异常:"+ex.Message);
}