c# - 将 Excel 数据传递给 C# 桌面应用程序
问题描述
我希望将 excel 工作簿中的信息传递到用户已经打开的 C# 应用程序中。
目前,我们有一个 Excel 工作簿,其中包含总结为值的程序审查列表。例如,通过为 1,次要为 0,失败为 -1。
这在一张包含两列的表格中列出,即过程名称和传递值;
| 程序 | 价值
|------------|------------
| 测试 1 | 1
| 测试 2 | 0
| 测试 3 | -1
我想获取这张表并将其传递给我们的报告应用程序,以便可以在前端对其进行操作,然后将其发送到数据库。
有什么方法可以创建一个允许将数据传递给 C# 应用程序的管道,例如单击按钮时?
解决方案
也许试试这个:
Microsoft.Office.Interop.Excel.Application _excelApp = new Microsoft.Office.Interop.Excel.Application();
_excelApp.Visible = false;
string fileName = String.Empty;
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
fileName = ofd.FileName;
//open the workbook
Microsoft.Office.Interop.Excel.Workbook workbook = _excelApp.Workbooks.Open(fileName,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
//select the first sheet or tell it the name of the sheet you want
if ((Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.get_Item("Worksheet") == null)
{
MessageBox.Show("Not a valid workbook");
}
else
{
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.get_Item("Worksheet");
//select how you want data to be transferred into your c# application?
tTag.Text = worksheet.get_Range("B2", System.Reflection.Missing.Value).Text;
//clean up stuffs
workbook.Close(false, Type.Missing, Type.Missing);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
_excelApp.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_excelApp);
}
}
推荐阅读
- javascript - 使用 JQuery/JavaScript 在 .append() 中添加带有 onclick 事件的按钮
- ruby-on-rails - ActiveModel 脏到忽略毫秒
- jenkins - 使用 jenkins 管道按顺序运行多个 jenkins 作业
- java - SensorManager 仅适用于某些设备
- java - 使用具有 ObservableList 作为值的 ObservableMap 填充 TableView
- android - 如何防止android停止带有前台(对于android版本> O)和通知的服务
- python - 将模型函数传递给 GeoDjango 中的 geojson 序列化程序
- c# - 如何在 .Net Core 中使用内存缓存
- r - 类型是整数,但它有一个小数点。为什么?
- ios - 在 AVPlayerLayer 和 AVPlayerViewController 中同步视频