仓库管理系统25--数据导出

原创不易,打字不易,截图不易,多多点赞,送人玫瑰,留有余香,财务自由明日实现 

1、添加用户控件

 

<UserControl x:Class="West.StoreMgr.View.DataExportView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:West.StoreMgr.View"xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"mc:Ignorable="d" DataContext="{Binding Source={StaticResource Locator},Path=DataExport}"d:DesignHeight="450" d:DesignWidth="800"><i:Interaction.Triggers><i:EventTrigger EventName="Loaded"><i:InvokeCommandAction Command="{Binding LoadCommand}"/></i:EventTrigger></i:Interaction.Triggers><Grid><Grid.RowDefinitions><RowDefinition Height="50"/><RowDefinition /><RowDefinition Height="auto"/></Grid.RowDefinitions><!--标题--><StackPanel Background="#EDF0F6" Orientation="Horizontal"><TextBlock Margin="10 0 0 0" Text="&#xf015;" FontSize="20" FontFamily="/Fonts/#FontAwesome" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="#797672"/><TextBlock Margin="10 0 0 0" Text="首页 > 数据导出" FontSize="20" FontFamily="/Fonts/#FontAwesome" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="#797672"/></StackPanel><!--Tabcontrol--><Grid Grid.Row="1" Margin="20"><TabControl ItemsSource="{Binding TabItems}"/></Grid><!--button--><Grid Grid.Row="2" Margin="10 10 10 10"><Button  Height="36" Width="120" Grid.Row="3" HorizontalAlignment="Right"Content="一键导出" Style="{StaticResource ButtonStyle}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:DataExportView}}"Command="{Binding BackupCommand}"/></Grid></Grid>
</UserControl>

 2、添加viewmodel

using GalaSoft.MvvmLight;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows;
using System.IO;
using GalaSoft.MvvmLight.Command;
using West.StoreMgr.Service;
using West.StoreMgr.Control;
using West.StoreMgr.Helper;
using West.StoreMgr.Model;namespace West.StoreMgr.ViewModel
{/// <summary>/// 数据导出viewmodel/// </summary>public class DataExportViewModel : ViewModelBase{private List<Customer> customers = new List<Customer>();private List<Goods> goods = new List<Goods>();private List<GoodsType> goodsTypes = new List<GoodsType>();private List<InStore> inStores = new List<InStore>();private List<Inventory> inventories = new List<Inventory>();private List<OutStore> outStores = new List<OutStore>();private List<OutStore_temp> outStoresTemp = new List<OutStore_temp>();private List<Spec> specs = new List<Spec>();private List<Store> stores = new List<Store>();private List<Supplier> suppliers = new List<Supplier>();private List<UserInfo> userInfos = new List<UserInfo>();private ObservableCollection<TabItem> tabItems = new ObservableCollection<TabItem>();/// <summary>/// tab选项集合/// </summary>public ObservableCollection<TabItem> TabItems{get { return tabItems; }set { tabItems = value; RaisePropertyChanged(); }}public RelayCommand LoadCommand{get{return new RelayCommand(() =>{customers = new CustomerService().Select();goods = new GoodsService().Select();goodsTypes = new GoodsTypeService().Select();inStores = new InStoreService().Select();inventories = new InventoryService().Select();outStores = new OutStoreService().Select();outStoresTemp = BuildList(outStores);specs = new SpecService().Select();stores = new StoreService().Select();suppliers = new SupplierService().Select();userInfos = new UserInfoService().Select();tabItems.Add(new TabItem { Header = "客户表", Content = new TableControl { DataContext = customers } });tabItems.Add(new TabItem { Header = "物资表", Content = new TableControl { DataContext = goods } });tabItems.Add(new TabItem { Header = "物资类别表", Content = new TableControl { DataContext = goodsTypes } });tabItems.Add(new TabItem { Header = "入库表", Content = new TableControl { DataContext = inStores } });tabItems.Add(new TabItem { Header = "盘存表", Content = new TableControl { DataContext = inventories } });tabItems.Add(new TabItem { Header = "出库表", Content = new TableControl { DataContext = outStoresTemp } });tabItems.Add(new TabItem { Header = "规格表", Content = new TableControl { DataContext = specs } });tabItems.Add(new TabItem { Header = "仓库表", Content = new TableControl { DataContext = stores } });tabItems.Add(new TabItem { Header = "供应商表", Content = new TableControl { DataContext = suppliers } });tabItems.Add(new TabItem { Header = "用户表", Content = new TableControl { DataContext = userInfos } });});}}/// <summary>/// 构建新的出库实体(原实体具有扩展属性,这是不必要的)/// </summary>/// <param name="outStores"></param>/// <returns></returns>List<OutStore_temp> BuildList(List<OutStore> outStores){List<OutStore_temp> list = new List<OutStore_temp>();foreach(OutStore item in outStores){OutStore_temp temp = new OutStore_temp();temp.Id = item.Id;temp.GoodsSerial = item.GoodsSerial;temp.Name = item.Name;temp.StoreId = item.StoreId;temp.StoreName = item.StoreName;temp.CustomerId = item.CustomerId;temp.CustomerName = item.CustomerName;temp.Unit = item.Unit;temp.Number = item.Number;temp.Price = item.Price;temp.InsertDate = item.InsertDate;temp.GoodsTypeId = item.GoodsTypeId;temp.UserInfoId = item.UserInfoId;temp.UserInfoName = item.UserInfoName;temp.Tag = item.Tag;temp.IsInventory = item.IsInventory; list.Add(temp); }return list;}/// <summary>/// 导出命令/// </summary>public RelayCommand BackupCommand{get{return new RelayCommand(() =>{Backup(customers, "customers");Backup(goods, "goods");Backup(goodsTypes, "goodsTypes");Backup(inStores, "inStores");Backup(inventories, "inventories");Backup(outStoresTemp, "outStores");Backup(specs, "specs");Backup(stores, "stores");Backup(suppliers, "suppliers");Backup(userInfos, "userInfos");});}}/// <summary>/// 导出数据/// </summary>/// <param name="array">列表对象</param>/// <param name="filename">文件名称</param>/// <exception cref="NotImplementedException"></exception>private void Backup<T>(List<T> array, string name){var t = typeof(T);var properties = t.GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);var contents = new StringBuilder();//标题foreach (var item in properties){//得到第一个自定义属性的参数的值,即属性描述var desc = item.CustomAttributes.ToList()[0].ConstructorArguments[0].Value.ToString();  contents.Append(desc);contents.Append(",");} contents.Append("\r\n");//换行//内容foreach (var model in array){var row = new StringBuilder();foreach (var property in properties){var val = property.GetValue(model);row.Append(val);row.Append(",");}contents.Append(row.ToString());contents.Append("\r\n");}//finename -> 表格+日期var date = $"{DateTime.Now.Year}-{DateTime.Now.Month}-{DateTime.Now.Day}";var filename = $"c:\\{name}{date}.csv";//保存File.WriteAllText(filename, contents.ToString(),Encoding.UTF8);//以utf-8的格式保存成csv格式MsgWinHelper.ShowMessage("数据导出完成");}}
}

3、运行效果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/39066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全年免费!环信发布出海创新版,助力泛娱乐创业者扬帆起航

目前&#xff0c;以陌生人社交、直播、语聊、电商等热门场景为代表的社交泛娱乐出海正发展得如火如荼&#xff0c;成为企业新的增长曲线。但随着出海企业增多&#xff0c;海外市场争夺、资源竞争与技术博弈也愈加激烈。 为了让更多创业者与创新者获得支持&#xff0c;快速高效…

onCreateOptionsMenu()和onOptionsItemSelected()的使用

书籍 《第一行代码 Android》第三版 开发 环境 Android Studio Jellyfish | 2023.3.1 创建Menu资源 在《第一行代码 Android》中的3.2.5 在Activity中使用Menu章节中,根据书中指引,在res/目录下创建menu目录,然后在menu目录下创建main.xml的布局资源. menu&#xff1a;必选…

PPT文件中,母版视图与修改权限的区别

在PPT&#xff08;PowerPoint&#xff09;制作过程中&#xff0c;母版视图和修改权限是两个重要的概念&#xff0c;它们各自在演示文稿的编辑、管理和分发中扮演着不同的角色。本文将从定义、功能、使用场景及区别等方面详细探讨PPT母版视图与修改权限的异同。 PPT母版视图 定…

六西格玛培训:不只是理论,更是实战中的利器——张驰咨询

六西格玛作为一种强大的流程改进和质量管理工具&#xff0c;其应用范围已经远远超出了传统制造业的界限&#xff0c;逐步渗透到金融业、互联网以及新能源等前沿领域。以下张驰咨询将结合之前的分析&#xff0c;展示六西格玛培训在这些行业中的成功案例及其带来的深远影响。 制造…

Keysight 是德 EXR604A 实时示波器

Keysight 是德 EXR604A 实时示波器 EXR604A Infiniium EXR 系列示波器&#xff1a;6 GHz&#xff0c;4 通道 全部 4 个通道均可提供 6 GHz 带宽&#xff0c;强大的 8 合 1 仪器&#xff0c;出色的硬件加速绘图功能&#xff0c;并且支持全面升级&#xff0c;可升级到 8 个通道…

ERP系统中有哪些模块?有哪些具体实现方案呢?

对于许多初次接触ERP系统的企业来说&#xff0c;可能会对系统中包含的模块和功能感到困惑。本文将详细介绍ERP系统中的主要模块&#xff0c;需要明确的是&#xff0c;ERP系统是一个庞大的系统&#xff0c;包含了多个模块&#xff0c;每个模块都有其独特的功能和作用。这些模块涵…

如何用python语言从json数据中获取自己想过的值?

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

要不要从单片机转Linux?进来看看大神怎么说

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;究竟要不要从单片机转Linu…

二维正态结论

关于二维正态分布&#xff0c;需掌握如下结论&#xff1a; &#xff08;1&#xff09;二维正态分布的两个边缘分布均为一维正态分布。 即由&#xff08;X&#xff0c;Y&#xff09;~N&#xff08;μ1&#xff0c;μ2&#xff0c;σ1&#xff0c;σ2&#xff0c;ρ&#xff09…

互联网下的扭蛋机小程序开发:探索其独特优势

随着互联网技术的飞速发展&#xff0c;小程序作为一种新兴的轻量级应用形式&#xff0c;已经在各个领域展现出强大的生命力和广泛的应用前景。在娱乐和零售行业&#xff0c;扭蛋机作为一种经典的随机性消费体验方式&#xff0c;结合小程序进行开发&#xff0c;带来了诸多独特优…

每日一更 EFK日志分析系统

需要docker和docker-compose环境 下面时docker-compose.yaml文件 [rootnode1 docker-EFK]# cat docker-compose.yaml version: 3.3services:elasticsearch:image: "docker.elastic.co/elasticsearch/elasticsearch:7.17.5"container_name: elasticsearchrestart: …

鲲鹏arm服务器部署paddleOCR

1. 部署环境信息查看 1.1 操作系统 $ cat /etc/os-release PRETTY_NAME"UnionTech OS Server 20" NAME"UnionTech OS Server 20" VERSION_ID"20" VERSION"20" ID"uos" PLATFORM_ID"platform:uel20" HOME_URL&q…

使用 Python 五年后,我发现学 python 必看这三本书!少走一半弯路

第一本 《Python编程-从入门到实践》 适合零基础的读者 豆瓣评分&#xff1a;9.1 推荐指数&#xff1a;5颗星 推荐理由&#xff1a; 本书是针对所有层次的 Python 读者而作的 Python 入门书。全书分为两部分&#xff1a; 第一部分介绍使用Python 编程所必须了解的…

CV每日论文--2024.6.28

1、On Scaling Up 3D Gaussian Splatting Training 中文标题&#xff1a;扩展 3D 高斯泼溅训练 简介&#xff1a;3D高斯点描(3DGS)由于其卓越的视觉质量和渲染速度,越来越受欢迎用于3D重建。然而,3DGS的训练目前仅在单个GPU上进行,由于内存限制,它的处理高分辨率和大规模3D重建…

2024 年江西省研究生数学建模竞赛题目 B题投标中的竞争策略问题---完整文章分享(仅供学习)

问题&#xff1a; 招投标问题是企业运营过程中必须面对的基本问题之一。现有的招投标平台有国家级的&#xff0c;也有地方性的。在招投标过程中&#xff0c;企业需要全面了解招标公告中的相关信息&#xff0c;在遵守招投标各种规范和制度的基础上&#xff0c;选择有效的竞争策…

新手教学系列——【Python开发】不同系统更换pip源的方法

在使用Python进行开发时,你可能会发现使用pip安装包的速度较慢,尤其是在国内进行操作时。为了提高安装速度,我们可以将pip的默认源更换为国内的一些镜像源。本文将详细介绍如何在不同操作系统上进行这一操作,并给出常用的国内镜像源。 为什么要换源 pip默认使用的是官方的…

Steam社区101错误代码/steam社区报错、打不开怎么办

Steam社区是很多游戏玩家经常逛的一个互动空间&#xff0c;玩家可以在Steam社区了解游戏的相关评价&#xff0c;也可以在Steam社区和五湖四海的游戏玩家一起讨论最近游戏的心得&#xff0c;分享游玩技巧&#xff0c;探讨游戏战术等等&#xff0c;结识不同地区的玩家。不过很多玩…

Java案例实现双色球

一问题&#xff1a; 二具体代码&#xff1a; package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {int []usersnumbersusernumslect();System.out.println("用户");for (int i 0; i <…

怎么找短视频素材在哪里找?推荐五个自媒体人必备的视频素材网站

自媒体时代&#xff0c;短视频创作已成为主流。高质量的视频素材不仅能够提升内容质量&#xff0c;还能增加观众的观看兴趣。本文将为各位自媒体创作者介绍五大必备的视频素材网站&#xff0c;帮助大家轻松解决素材寻找的困扰&#xff0c;确保视频内容的专业性和吸引力。 蛙学…

三步学会使用WebSocekt

目录 一 什么是websocket 二 如何使用websocket 1.导入websocket的maven坐标 2.创建websocket的服务类 3.创建websocket的配置类 4.按需求实现业务逻辑 5.前端实现websocket 一 什么是websocket websocket和HTTP一样是基于TCP的一个通信协议。不过他是支持客户端和服务端…