0
私は単純なアプリケーションを持っており、Excelのデータをデータグリッドにインポートします。ここにコード:データグリッドwpfを更新しています。 ItemsSourceとItems.Refresh()が動作しない
private void InitializeDataGridView()
{
//Open the Excel file using ClosedXML.
using (XLWorkbook workBook = new XLWorkbook(ExcelFile.ExcelFilePath))
{
//Read the first Sheet from Excel file.
IXLWorksheet workSheet = workBook.Worksheet(1);
//Create a new DataTable.
DataTable dt = new DataTable();
//Loop through the Worksheet rows.
bool firstRow = true;
foreach (IXLRow row in workSheet.Rows())
{
//Use the first row to add columns to DataTable.
if (firstRow)
{
foreach (IXLCell cell in row.Cells())
{
dt.Columns.Add(cell.Value.ToString());
}
firstRow = false;
}
else
{
//Add rows to DataTable.
dt.Rows.Add();
int i = 0;
foreach (IXLCell cell in row.Cells())
{
dt.Rows[dt.Rows.Count - 1][i] = cell.Value.ToString();
i++;
}
}
dtGrid.ItemsSource = dt.DefaultView;
}
}
}
うまくいきます。しかし、私はいくつかのデータを追加したい。このコードを使用して:
public static void AddData(DateTime date, int time, string title, string description)
{
// Opening excel file
using (XLWorkbook workBook = new XLWorkbook(ExcelFile.ExcelFilePath))
{
IXLWorksheet worksheet = workBook.Worksheet("Progress"); // Trying to get the Progress worksheet
// Getting table from DataTable
var dataTable = GetTable(date, time, title, description);
// Searching for last used row and first used column
var lastRowUsed = worksheet.LastRowUsed().RowNumber();
var firstColumnUsed = worksheet.FirstColumnUsed().ColumnNumber();
// Insterting data
worksheet.Cell(lastRowUsed + 1, firstColumnUsed).InsertData(dataTable.AsEnumerable());
// Adjusting content to fit
worksheet.Columns().AdjustToContents();
// Saving excel file
workBook.Save();
}
}
public static DataTable GetTable(DateTime date, int time, string title, string description)
{
DataTable table = new DataTable();
table.Columns.Add("Data", typeof(DateTime));
table.Columns.Add("Czas(minuty)", typeof(int));
table.Columns.Add("Tytuł", typeof(string));
table.Columns.Add("Opis", typeof(string));
table.Rows.Add(date, time, title, description);
return table;
}
そしてそれはうまく動作します。データグリッドに問題があります。 Excelファイルに何かを追加した後に更新されません。それは作業波平
dtGrid.ItemsSource = null;
InitializeDataGridView();
:
は、私はそのような何かをしようとしました。私もdtGrid.Items.Refresh();
を使用して、それは働いていなかった。 エクセルファイルにデータを追加した後、データグリッドを更新するにはどうすればよいですか?
あなたの編集の後、あなたのExcelプロセスが間違いなく閉鎖されている、つまりタスクマネージャで実行中のExcelプロセスが見えないことを確認しましたか?ファイルが開いている場合は、グリッドを再初期化すると動作しない可能性があります。 –
はい、私のExcelファイルは間違いなく終了しています。 Initializeの直後にデータを追加した直後。 – Porqqq
「進行状況」シートは「ワークシート(1)」と同じですか? – Crowcoder