private void SaveAs(DataGridView dgvAgeWeekSex)//另存新档按钮 导出成Excel
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "Export Excel File To";
saveFileDialog.ShowDialog();
Stream myStream;
myStream = saveFileDialog.OpenFile();
//StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string str = "";
try
{
//写标题
for (int i = 0; i < dgvAgeWeekSex.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dgvAgeWeekSex.Columns[i].HeaderText;
}
sw.WriteLine(str);
//写内容
for (int j = 0; j < dgvAgeWeekSex.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dgvAgeWeekSex.Columns.Count; k++)
{
if (k > 0)
{
tempStr += "\t";
}
if (k == 0||k == 2)
{
//这里导出身份证号。
if (dgvAgeWeekSex.Rows[j].Cells[k].Value == null)
{
tempStr += "";
}
else
{
tempStr += "'" + dgvAgeWeekSex.Rows[j].Cells[k].Value;
}
}
else
{
if (dgvAgeWeekSex.Rows[j].Cells[k].Value == null)
{
tempStr += "";
}
else
{
tempStr += Convert.ToString(dataGridView1.Rows[j].Cells[k].Value);
}
}
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
MessageBox.Show("已经生成指定Excel文件!");
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
在某些列比如0和2列值为一串数字组成的字符串,可能存在开头为0的值,例如00013,所以在处理的时候将这两列值前面加“‘”(单撇),目的是转化为字符串格式,可是导出以后显示的存在这个撇,即('00002),不想看到这个撇怎么处理呢?