c#--导出excel或txt文件

使用:

List<string> columns = new List<string> {"时间","设备编号","计数器","线号","点号"};
var name= DateTime.Now.ToString("yyyy-MM-dd HH mm ss") + " " + cb_type.Text + " " + cb_wave.Text + " " + cb_fre.Text;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls|文本文件(*.txt)|*.txt";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = false;
//saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出文件为...";
saveFileDialog.FileName = name;
DialogResult dr = saveFileDialog.ShowDialog();
if (dr != DialogResult.OK)
{
    return ;
}
ExportToExcelOrTxt(dataGridView1, saveFileDialog.FileName, columns);

ExportToExcelOrTxt函数:
fileName为文件路径及名称
columns为需要显示的列及数据
使用的是winform下的DataGridView 控件,若为其他数据,如datatable,可以自行将下面的循环修改

public bool ExportToExcelOrTxt(DataGridView dgvData, string fileName, List<string>columns)
{
    StreamWriter sw = new StreamWriter(fileName, false,Encoding.GetEncoding(-0));
    string str = "";
    try
    {
        //写标题
        for (int i = 0; i < dgvData.ColumnCount; i++)
        {
            var title = dgvData.Columns[i].HeaderText;
            if (columns.Contains(title))
            {
                if (!string.IsNullOrEmpty(str))
                {
                    str += "\t";
                }
                str += dgvData.Columns[i].HeaderText;
            }
                
        }
        //str += "\t" + "时间戳";
        sw.WriteLine(str);
        //写内容
        for (int j = 0; j < dgvData.Rows.Count; j++)
        {
            string tempStr = "";
            DateTime time = default;
            for (int k = 0; k < dgvData.Columns.Count; k++)
            {
                if (columns.Contains(dgvData.Columns[k].HeaderText))
                {
                    if (!string.IsNullOrEmpty(tempStr))
                    {
                        tempStr += "\t";
                    }
                    string cellValue = dgvData.Rows[j].Cells[k].Value?.ToString();
                    if (cellValue == null)
                    {
                        continue;
                    }
                    if (cellValue.Length > 8 && DateTime.TryParse(cellValue, out DateTime time1))
                    {
                        time = time1;
                    }
                    cellValue = cellValue.Replace(" ", "");
                    cellValue = cellValue.Replace("\r", "");
                    cellValue = cellValue.Replace("\n", "");
                    cellValue = cellValue.Replace("\r\n", "");
                    tempStr += cellValue;
                }
                // tempStr += dgvData.Rows[j].Cells[k].Value.ToString();
            }
            //DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
            //long timeStamp = (long)(time - startTime).TotalSeconds; // 相差秒数
            //tempStr += "\t" + timeStamp;
            sw.WriteLine(tempStr);
        }
        MessageBox.Show("导出成功");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
        return false;
    }
    finally
    {
        sw.Close();
    }

    return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yyuanyuxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值