ListView中队数据的导出与DataGridView略有不同。而且由于WPF中不支持创建WookBook直接来写数据到Excel中,因而在处理要进行一些技术性处理。下面以我前段时间做的一个处理为例。下面是示例方法:
private void OutPutBill_Click(object sender, RoutedEventArgs e)
{
//判断是否有数据
if (SignInList.ItemsSource == null) //SignInList是WPF中的ListView,即为数据源
{
MessageBox.Show("没有可供导出的数据");
return;
}
//创建数据导出文件对话框,以设置文件路径
SaveFileDialog saveFile = new SaveFileDialog() { Filter = "CSV Files (*.csv)|*.csv|Excel Files (*.xls)|*.xls|All files (*.*)|*.*" };
saveFile.Title = "导出文件路径";
saveFile.FilterIndex = 2;
return saveFile; StringBuilder strBuilder = new StringBuilder();
if (saveFile.ShowDialog() == true)
{
//获取文件格式
string strFormat = saveFile.SafeFileName.Substring(saveFile.SafeFileName.IndexOf('.') + 1).ToUpper();
List<string> signLists = new List<string>();
//将ListView的Header写入
if (1 == 1)
{
signLists.Clear();
//根据ListView的Header名称(ListVew中Header对应的Name)访问获取其文本
signLists.Add(Format(BillNO.Header.ToString(), strFormat)); //调用公共方法进行字符转换
signLists.Add(Format(ResumeNO.Header.ToString(), strFormat));
signLists.Add(Format(ExamTypeName.Header.ToString(), strFormat));
signLists.Add(Format(SignState.Header.ToString(), strFormat));
signLists.Add(Format(SignInDate.Header.ToString(), strFormat));
signLists.Add(Format(SignInTime.Header.ToString(), strFormat));
//按行写入Header
BuilderStringOfRow(strBuilder, signLists, strFormat);
}
forea