前几天已将基于开源CoreShop框架的微信小程序开启多租户功能,还开发了一个辅助客户端,已经完成了以下工作:
- 修改管理员表格,添加上所管理的店铺列表,两个产品信息表也全部加上所属店铺信息。
- 开发一个WPF客户端,能与服务器登录并能正常通信。尤其是添加了一个辅助类CoreHelper。
接下来,我们将继续完善WPF客户端,
一、将windows客户调整一下,将登录信息上移
<Window x:Class="WpfApp2.WindowImportExcel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="导入EXCEL" Height="820" Width="1600" FontSize="16"
Loaded="Window_Loaded">
<Grid Margin="20">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="780px"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="管理后台网址:" VerticalAlignment="Center"/>
<TextBox Grid.Row="0" Grid.Column="1" x:Name="txtWebhost" IsReadOnly="False" Margin="5" Text="http://localhost:1987/" />
<Button Grid.Row="0" Grid.Column="2" x:Name="btnLogin" Grid.RowSpan="2" Content="登录" Width="80" Margin="5" Click="BtnLogin_Click"/>
<!-- 用户密码-->
<Label Grid.Row="1" Grid.Column="0" Content="用户名:" VerticalAlignment="Center" />
<TextBox Grid.Row="1" Grid.Column="1" x:Name="txtUseName" IsReadOnly="False" Margin="5" Text="" />
<Label Grid.Row="2" Grid.Column="0" Content="密码:" VerticalAlignment="Center" />
<Grid Grid.Row="2" Grid.Column="1" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="89*"/>
<ColumnDefinition Width="377*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<PasswordBox x:Name="txtPassword" Grid.Column="0" VerticalAlignment="Center" Grid.ColumnSpan="2" Password=""/>
<CheckBox x:Name="chkRememberPassword"
Content="保存密码"
Grid.Column="2"
Margin="5,0,0,0"
VerticalAlignment="Center"/>
</Grid>
<!-- 选择Excel文件 -->
<Label Grid.Row="3" Grid.Column="0" Content="选择EXCEL文件:" VerticalAlignment="Center"/>
<TextBox Grid.Row="3" Grid.Column="1" x:Name="txtExcelPath" IsReadOnly="True" Margin="5"/>
<Button Grid.Row="3" Grid.Column="2" Content="浏览..." Width="80" Margin="5" Click="BtnBrowseExcel_Click"/>
<!-- 选择图片目录 -->
<Label Grid.Row="4" Grid.Column="0" Content="选择图片目录:" VerticalAlignment="Center"/>
<TextBox Grid.Row="4" Grid.Column="1" x:Name="txtImageDir" Margin="5"/>
<Button Grid.Row="4" Grid.Column="2" Content="浏览..." Width="80" Margin="5,0,5,5" Click="BtnBrowseImageDir_Click" Height="25" VerticalAlignment="Bottom"/>
<!-- 选择店铺-->
<Label Grid.Row="6" Grid.Column="0" Content="店铺:" VerticalAlignment="Center"/>
<ComboBox Grid.Row="6" Grid.Column="1" x:Name="cmbStore" Margin="5"
></ComboBox>
<!-- 上传按钮 -->
<Button Grid.Row="7" Grid.Column="2" Content="正式上传" Width="120" Height="36" Margin="5" HorizontalAlignment="Left" Click="BtnUpload_Click"/>
<!-- 结果显示 -->
<TextBox Grid.Row="7" Grid.Column="0" Grid.ColumnSpan="3" x:Name="txtResult" Margin="5" Height="100" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" IsReadOnly="True"/>
<!-- SignalR消息列表 -->
<Label Grid.Row="0" Grid.Column="3" Content="信息列表:" VerticalAlignment="Center"/>
<ListBox Grid.Row="1" Grid.Column="3" Grid.RowSpan="4" x:Name="lstSignalRMessages" Margin="5"/>
</Grid>
</Window>
二、 在windows客户端上传商品信息
使用NPOI 读取EXCEL的文件内容
using NPOI.HSSF.UserModel;
using NPOI.OpenXml4Net.Exceptions;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.IO;
using System.Windows;
namespace ExcelReaderApp
{
/// <summary>
/// Excel 读取工具类
/// </summary>
public static class ExcelReader
{
/// <summary>
/// 读取 Excel 文件到 DataTable(自动检测工作表)
/// </summary>
public static DataTable ReadExcelToDataTable(string filePath)
{
return ReadExcelToDataTable(filePath, readFirstSheetOnly: true, sheetIndex: 0);
}
/// <summary>