/// 根据日期获取当周星期一
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime StartOfTheWeek(DateTime dt)
{
return dt.AddDays(-(Convert.ToInt16(dt.DayOfWeek)-));
}
/// <summary>
/// 根据日期获取当周末
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime EndOfTheWeek(DateTime dt)
{
return StartOfTheWeek(dt).AddDays();
}
/// <summary>
///根据日期获取月初日期
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime StartOfTheMonth(DateTime dt)
{
return new DateTime(dt.Year, dt.Month, );
}
/// <summary>
/// 根据日期获取月底日期
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime EndOfTheMonth(DateTime dt)
{
return StartOfTheMonth(dt).AddMonths().AddDays(-);
}
/// <summary>
/// 感觉日期年初日期
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime StartOfTheYear(DateTime dt)
{
return new DateTime(dt.Year, , );
} /// <summary>
/// 根据日期获取年底日期
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime EndOfTheYear(DateTime dt)
{
return StartOfTheYear(dt).AddYears().AddDays(-);
}
/**//// <summary>
/// 常用方法,列之间加\t,一行一行输出,此文件其实是csv文件,不过默认可以当成Excel打开。
/// </summary>
/// <remarks>
/// using System.IO;
/// </remarks>
/// <param name="dgv"></param>
private void DataGridViewToExcel(DataGridView dgv)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Execl files (*.xls)|*.xls";
dlg.FilterIndex = ;
dlg.RestoreDirectory = true;
dlg.CreatePrompt = true;
dlg.Title = "保存为Excel文件"; if (dlg.ShowDialog() == DialogResult.OK)
{
Stream myStream;
myStream = dlg.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-));
string columnTitle = "";
try
{
//写入列标题
for (int i = ; i < dgv.ColumnCount; i++)
{
if (i > )
{
columnTitle += "\t";
}
columnTitle += dgv.Columns[i].HeaderText;
}
sw.WriteLine(columnTitle); //写入列内容
for (int j = ; j < dgv.Rows.Count; j++)
{
string columnValue = "";
for (int k = ; k < dgv.Columns.Count; k++)
{
if (k > )
{
columnValue += "\t";
}
if (dgv.Rows[j].Cells[k].Value == null)
columnValue += "";
else
columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();
}
sw.WriteLine(columnValue);
}
sw.Close();
myStream.Close();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
}
}
}
 /// <summary>
/// 将DataGridView中的数据导入到Excel中
/// </summary>
/// <param name="dt">DataGridView</param>
/// <param name="templatePath">模板的路径</param>
/// <param name="excelName">导入Excel的路径</param>
/// <returns></returns>
public static bool DataGridViewToExcel(DataGridView dg, string templatePath, string excelName)
{
bool result = true;
XmlDocument xmlDoc = new XmlDocument();
if (File.Exists(templatePath))
{
xmlDoc.Load(templatePath);
XmlNode root = xmlDoc.SelectSingleNode(@"/*[local-name()='Workbook']/*[local-name()='Worksheet'][1]/*[local-name()='Table']");
foreach (DataGridViewRow dgRow in dg.Rows)
{
XmlElement row = xmlDoc.CreateElement("", "Row", "urn:schemas-microsoft-com:office:spreadsheet");
row.SetAttribute("AutoFitHeight", "urn:schemas-microsoft-com:office:spreadsheet", "");
foreach (DataGridViewColumn dgcol in dg.Columns)
{
if (dgcol.Visible && dgcol.IsDataBound && dgcol.GetType().Name == "DataGridViewTextBoxColumn")
{
XmlElement cell = xmlDoc.CreateElement("", "Cell", "urn:schemas-microsoft-com:office:spreadsheet");
XmlElement data = xmlDoc.CreateElement("", "Data", "urn:schemas-microsoft-com:office:spreadsheet");
data.SetAttribute("Type", "urn:schemas-microsoft-com:office:spreadsheet", "String");
data.InnerText = StringUility.ReturnFormatString(dgRow.Cells[dgcol.Name].Value);
cell.AppendChild(data);
row.AppendChild(cell);
}
}
//root.InsertBefore(row, root.LastChild);
root.AppendChild(row);
} #region 添加合计行
XmlElement totalRow = xmlDoc.CreateElement("", "Row", "urn:schemas-microsoft-com:office:spreadsheet");
totalRow.SetAttribute("AutoFitHeight", "urn:schemas-microsoft-com:office:spreadsheet", "");
for (int i = ; i < ; i++)
{
XmlElement cell = xmlDoc.CreateElement("", "Cell", "urn:schemas-microsoft-com:office:spreadsheet");
XmlElement data = xmlDoc.CreateElement("", "Data", "urn:schemas-microsoft-com:office:spreadsheet");
data.SetAttribute("Type", "urn:schemas-microsoft-com:office:spreadsheet", i == ? "String" : "Number");
data.InnerText =(i==?"合计":dg.Rows.Count.ToString());
cell.AppendChild(data);
totalRow.AppendChild(cell);
}
root.AppendChild(totalRow);
#endregion XmlNode countnode = xmlDoc.SelectSingleNode(@"/*[local-name()='Workbook']/*[local-name()='Worksheet'][1]/*[local-name()='Table']");
countnode.Attributes["ss:ExpandedRowCount"].Value = (Int32.Parse(countnode.Attributes["ss:ExpandedRowCount"].Value) + dg.Rows.Count+).ToString();//标题+合计+数据
xmlDoc.Save(excelName);
result = true;
}
else
{
result = false;
}
return result;
}

RFID的winform程序心得2

RFID的winform程序心得1的更多相关文章

  1. RFID的winform程序心得2

    RFID的winform程序心得1 webBrowser1.AllowWebBrowserDrop = false;//将 WebBrowser 控件的 AllowWebBrowserDrop 属性设 ...

  2. C# winform程序怎么打包成安装项目(VS2010图解)

    作为研发人员,在本机上开发的winform.wpf或者控制台程序需要发给其他人测试时候,一般需要对其进行打包生成setup安装文件,根据网上查找的资料并结合自己打包成功,记录如下: 注:本程序是一个利 ...

  3. winform开发 总结1>winform程序使用线程的必要性,以及正确的使用方式

    winform程序中使用线程的必要性: 单线程操作在执行耗时任务时会造成界面假死,带来非常差劲的用户体验,有时候甚至会影响到正常的业务执行,使用多线程做相关操作实属不得已之举. 那么在编写程序之前必须 ...

  4. 记一次WinForm程序中主进程打开子进程并传递参数的操作过程(进程间传递参数)

    目标:想在WinForm程序之间传递参数.以便子进程作出相应的处理. 一种错误的方法 父进程的主程序: ProcessStartInfo psi = new ProcessStartInfo(); p ...

  5. 用winform程序来了解委托和事件

    一.浅谈委托 如果有个过winform 和webform 程序开发的小伙伴一定有个这样的感觉吧,点击Button直接就执行了那个方法,到此他是怎么实现了的呢,大家有考虑过没有? 回到正题,什么是委托呢 ...

  6. 基于DevExpress的Winform程序安装包的制作

    在我们做系统开发的时候,都会面临一个安装包制作的问题,如何把我们做好的系统,通过安装包工具整合成一个安装包给客户进行安装.安装包的优势就是一步步安装就可以了,不用复制一大堆文件给客户,还怕缺少那个文件 ...

  7. 在Winform程序中设置管理员权限及为用户组添加写入权限

    在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身 ...

  8. 吉特仓库管理系统(开源)-如何在网页端启动WinForm 程序

    在逛淘宝或者使用QQ相关的产品的时候,比如淘宝我要联系店家点击旺旺图标的时候能够自动启动阿里旺旺进行聊天.之前很奇怪为什么网页端能够自动启动客户端程序,最近在开发吉特仓储管理系统的时候也遇到一个类似的 ...

  9. 【转】C#中WinForm程序退出方法技巧总结

    C#中WinForm程序退出方法技巧总结 一.关闭窗体 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.Ex ...

随机推荐

  1. Python基础之函数二

    函数的嵌套 通过名字就能理解,函数里是还可以套着函数用的.这么牛,下面就来看看几段代码,看看是怎么回事.注意:函数一定是先定义后使用. x=1234 def f1(): #定义一个主函数 x = 1 ...

  2. spring cloud 容错之zuul回退和Zuul过滤器

    一.容错:Zuul回退 如果微服务下线了,针对每个微服务,都需要回复一个中文提示,而不是报异常 1.新建ConsumerFallbackProvider.java package com.pupeiy ...

  3. linux:安装Memcache并使用

    1.Linux安装Memcache : curl -O http://memcached.org/files/memcached-1.5.4.tar.gz 解压 2.启动Memcache: memca ...

  4. html表单的使用

    表单用于搜集不同类型的用户输入,表单由不同类型的标签组成,实现一个特定功能的表单区域(比如:注册),首先应该用<form>标签来定义表单区域整体,在此标签中再使用不同的表单控件来实现不同类 ...

  5. Oracle查询CLOB字段类型的内容

    select dbms_lob.substr(lo.ldtext) as text from longdescription lo

  6. webpack学习笔记--区分环境

    为什么需要区分环境 在开发网页的时候,一般都会有多套运行环境,例如: 在开发过程中方便开发调试的环境. 发布到线上给用户使用的运行环境. 这两套不同的环境虽然都是由同一套源代码编译而来,但是代码内容却 ...

  7. C#学习-索引器

    当一个类包含数组成员时,索引器的使用将大大地简化对类中数组成员的访问. 索引器的定义类似于属性,也具有get访问器和set访问器,以下是 [修饰符] 数据类型 this [索引类型index] { g ...

  8. 【AtCoder】ExaWizards 2019

    ExaWizards 2019 C - Snuke the Wizard 发现符文的相对位置不变,直接二分某个位置是否到达最左或最右来计算 #include <bits/stdc++.h> ...

  9. 【转】如何向Android模拟器打电话发短信

    转载地址:http://hi.baidu.com/jeremylai/item/420f9c9fe4881fccb62531f7 1. 启动Android Emulator, 查看标题栏找出端口.一般 ...

  10. Flink--基于mysql的sink和source

    基于mysql的source操作 object MysqlSource { def main(args: Array[String]): Unit = { val env = StreamExecut ...