c#字典自定义路径存入到表格文件中,存入之后设为只读且每日存入一次,则每天将当天和前一天的表格内两列数据进行对比,如果两个文件两列数据不一致,则弹窗
时间: 2024-10-25 14:04:30 浏览: 25
C#从SQL数据库中读取和存入图片中文最新版本
在C#中,你可以通过使用`StreamWriter`和`StreamReader`操作文本文件,并结合`Dictionary`数据结构以及Excel或CSV文件处理库,如EPPlus或CsvHelper,来实现这样的功能。首先,你需要创建一个字典来存储需要比较的数据,然后将其序列化并保存到CSV或Excel表格文件中。这里是一个基本步骤:
1. 定义自定义的数据模型,比如`DataModel`类,包含需要对比的两列字段。
```csharp
public class DataModel
{
public string Column1 { get; set; }
public string Column2 { get; set; }
}
```
2. 创建一个方法,用于将字典转换成表格并设置为只读。
```csharp
using OfficeOpenXml;
// 或者 CsvHelper
private void SaveAndSetReadOnly(Dictionary<string, DataModel> data, string filePath)
{
using var package = new ExcelPackage();
// 或者使用 CsvHelper
// using (var writer = new StreamWriter(filePath))
// {
// using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
// {
// csv.WriteRecords(data.Values);
// }
// }
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
foreach (var item in data)
{
worksheet.Cells[item.Key, 1].Value = item.Value.Column1;
worksheet.Cells[item.Key, 2].Value = item.Value.Column2;
}
package.Workbook.SaveAs(filePath);
// 将文件设为只读
FileInfo fileInfo = new FileInfo(filePath);
fileInfo.IsReadOnly = true;
}
```
3. 每天定时任务中,检查新旧文件差异并显示警告窗口。
```csharp
DateTime yesterday = DateTime.Now.AddDays(-1);
string oldFilePath = Path.Combine(Directory.GetCurrentDirectory(), "old_data.csv"); // 替换为实际旧文件路径
string newFilePath = Path.Combine(Directory.GetCurrentDirectory(), "new_data.csv"); // 替换为实际新文件路径
if (!File.Exists(oldFilePath)) // 如果不存在旧文件,直接复制新建的
{
File.Copy(newFilePath, oldFilePath);
}
else
{
using (StreamReader readerOld = new StreamReader(oldFilePath), readerNew = new StreamReader(newFilePath))
{
string lineOld, lineNew;
while ((lineOld = readerOld.ReadLine()) != null && (lineNew = readerNew.ReadLine()) != null)
{
if (!lineOld.Equals(lineNew)) // 数据不一致时
{
MessageBox.Show("今日数据与昨日数据存在差异!");
}
}
}
}
```
阅读全文