Uzun zaman okuyucusu, ilk kez poster.C#, Visual Studio, excel'i açmak ve daha sonra verileri birleşik kutuya koymak
Son birkaç saat için bir excel çalışma kitabından sayfa adları çekmeye ve bir açılan kutuda seçim için görüntülemeye çalışırken bir sorun yaşadım. Çalışmayı başardım ama biraz ham ve çok verimli değil.
private void btnChoose2_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openfileDialog1 = new OpenFileDialog();
if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
openLabel.Text = openfileDialog1.SafeFileName;
String filename = DialogResult.ToString();
var excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Visible = false;
excelApp.Workbooks.Open(openfileDialog1.FileName);
int rcountTag = excelApp.Sheets.Count - 1;
for (int i = 1; i <= rcountTag + 1; i++)
{
Microsoft.Office.Interop.Excel.Sheets excelSheets = excelApp.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)
excelSheets.get_Item(i);
comboBoxMapping.Items.Insert(i - 1, worksheet.Name);
}
}
}
Herhangi bir öneri çok takdir edilecektir.
:
Sonra
using OfficeOpenXml;
sac adlarının listesini alın:
Nuget paket yöneticisinden epplus kütüphane yükleyin Bu kodu sağlamlaştırmak için. Excel ile bitirmeden önce excelApp.Quit() 'yi çağırmalısınız. Ayrıca, kapsam dışında kalmadan önce her COM örneğinde ** bulunan 'System.Runtime.InteropServices.Marshal.ReleaseComObject (instance)' işlevini de çağırmanız gerekir. Yukarıdaki kodunuzda ayrıca "excelApp.Workbooks.Open (...)' da "excelApp.Workbooks" referansını da içerecektir - açık çağrılmadan önce excelApp.Workbooks'a bir başvuru yapmanız ve referansı serbest bırakmanız gerekir. bitirmeden önce. Her referansta çok dikkatli olmalısınız. – Enigmativity
Teşekkür ederim Enigmativity, Bunu aklımda tutacağım. –