C# 如何解析xlsm文件而不打开它
我对编程相当陌生,但对于C#的大部分方面,我已经找到了解决方法。但我在网上找不到太多关于这方面的信息,今天我特别的漫不经心。当我被告知无法使用数据库获取电子邮件地址时,我刚刚完成了整个程序的电子邮件部分,我不得不使用Excel文档 我需要阅读xlsm并将用户名与电子邮件进行比较,以获取当前用户的电子邮件地址。我已经有了用户名,但还没有在网上找到多少特别有助于xlsm的信息。以下是我尝试过的几个例子:C# 如何解析xlsm文件而不打开它,c#,C#,我对编程相当陌生,但对于C#的大部分方面,我已经找到了解决方法。但我在网上找不到太多关于这方面的信息,今天我特别的漫不经心。当我被告知无法使用数据库获取电子邮件地址时,我刚刚完成了整个程序的电子邮件部分,我不得不使用Excel文档 我需要阅读xlsm并将用户名与电子邮件进行比较,以获取当前用户的电子邮件地址。我已经有了用户名,但还没有在网上找到多少特别有助于xlsm的信息。以下是我尝试过的几个例子: 这一个将是理想的,因为我喜欢我的代码短而甜,只要可能。但是当我尝试运行它时,我得到的“根级别的
这一个将是理想的,因为我喜欢我的代码短而甜,只要可能。但是当我尝试运行它时,我得到的“根级别的数据无效”。第1行,位置1。“我猜这与使用XDocument有关。这就是我解析XML文件的方式,所以我可能在这里使用了错误的类,但是在xlsm上也没有找到太多内容,所以我不确定该使用什么
string[] arr = XDocument.Load(@"C:\example.xlsm").Descendants("Login name" + "Email").Select(element => element.Value).ToArray();
这一个即使在下载OpenXMLSDKV25之后,也找不到“DocumentFormat”,并且文件名已经被使用了[const string filename],但是如果我将其更改为fileName2,那么它表示并非所有代码路径都返回值
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using Excel = Microsoft.Office.Interop.Excel;
public static string GetCellValue(string fileName, string sheetName, string addressName)
{
const string fileName = @"C:\example.xlsm";
// Retrieve the value in cell A1.
string value = GetCellValue(fileName, "Sheet1", "C2");
Console.WriteLine(value);
// Retrieve the date value in cell A2.
value = GetCellValue(fileName, "Sheet1", "F2");
Console.WriteLine(DateTime.FromOADate(double.Parse(value)).ToShortDateString());
}
此工作簿不喜欢工作簿[“Sheet1”]-无法将带[]的索引应用于“Microsoft.Office.Interop.Excel.workbook”类型的表达式
using Excel = Microsoft.Office.Interop.Excel;
//Excel.Application excel = new Excel.Application();
//Excel.Workbook workbook = excel.Workbooks.Open("example.xlsm");
//Excel.Worksheet worksheet = workbook["Sheet1"] as Excel.Worksheet;
//string someData = (worksheet.Range["C2"] as Excel.Range).Value.ToString();
//worksheet = null;
//workbook.Close();
//excel.Quit();
任何帮助都将受到感谢 我更正了您的代码(您必须通过图纸集合访问图纸:
using Excel = Microsoft.Office.Interop.Excel;
//Excel.Application excel = new Excel.Application();
//Excel.Workbook workbook = excel.Workbooks.Open("example.xlsm");
//Excel.Worksheet worksheet = workbook.Sheets["Sheet1"] as Excel.Worksheet;
//string someData = (worksheet.Range["C2"] as Excel.Range).Value.ToString();
//worksheet = null;
//workbook.Close();
//excel.Quit();
编译器的意思是,并非
GetCellValue
中的所有路径都返回值,因为不会从中返回值。