新手有关问题.如果xls中有vba的宏,用代码是不是不能读取
新手问题.如果xls中有vba的宏,用代码是不是不能读取
使用C#代码读取一个xls文件
我有二个文件一个是1.xls,一个是2.xls
1.xls中有vba的宏,还有什么只读的密码函数啥的
2.xls是我建的一个普通的文件,
但是1.xls中的内容使用下面的代码全是空..2.xls中的就没问题
这种文档我应该用代码怎么读...
C#代码如下,很简单
Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
Workbook myWorkbook = null;
Worksheet mySheet = null;
string excelFileName = "C:\\1.xls";
try {
// 打开Excel文件
myWorkbook = myExcel.Workbooks.Open(excelFileName, Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
// 获取第一个sheet
mySheet = (Worksheet)myWorkbook.Sheets[1];
// 读取第一行第一列的数据
//string firstString = ((Microsoft.Office.Interop.Excel.Range)mySheet.Cells[11, 1]).Text.ToString();
string firstString = (string)((Microsoft.Office.Interop.Excel.Range)mySheet.Cells[3, "A"]).Formula.ToString();
MessageBox.Show(firstString);
System.Data.DataTable dt = new System.Data.DataTable();
for (int i = 1; i <= 24; i++)
{
dt.Columns.Add(i.ToString(), typeof(string));
}
for (int i = 1; i <= 14 ; i++)
{
DataRow dr = dt.NewRow();
int temp = 0;
for (int j = (int)'A'; j < (int)'X'; j++)
{
dr[temp] = (string)((Microsoft.Office.Interop.Excel.Range)mySheet.Cells[i,((Char)j).ToString()]).Formula.ToString();
temp ++;
}
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
myWorkbook.Close(false, Missing.Value, Missing.Value);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
// 释放资源
mySheet = null;
myWorkbook = null;
myExcel.Quit();
myExcel = null;
}
------解决方案--------------------
“1.xls中有vba的宏,还有什么只读的密码函数啥的”这句没明白…………
myExcel.Workbooks.Open() 的执行不成功吧?
使用C#代码读取一个xls文件
我有二个文件一个是1.xls,一个是2.xls
1.xls中有vba的宏,还有什么只读的密码函数啥的
2.xls是我建的一个普通的文件,
但是1.xls中的内容使用下面的代码全是空..2.xls中的就没问题
这种文档我应该用代码怎么读...
C#代码如下,很简单
Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
Workbook myWorkbook = null;
Worksheet mySheet = null;
string excelFileName = "C:\\1.xls";
try {
// 打开Excel文件
myWorkbook = myExcel.Workbooks.Open(excelFileName, Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
// 获取第一个sheet
mySheet = (Worksheet)myWorkbook.Sheets[1];
// 读取第一行第一列的数据
//string firstString = ((Microsoft.Office.Interop.Excel.Range)mySheet.Cells[11, 1]).Text.ToString();
string firstString = (string)((Microsoft.Office.Interop.Excel.Range)mySheet.Cells[3, "A"]).Formula.ToString();
MessageBox.Show(firstString);
System.Data.DataTable dt = new System.Data.DataTable();
for (int i = 1; i <= 24; i++)
{
dt.Columns.Add(i.ToString(), typeof(string));
}
for (int i = 1; i <= 14 ; i++)
{
DataRow dr = dt.NewRow();
int temp = 0;
for (int j = (int)'A'; j < (int)'X'; j++)
{
dr[temp] = (string)((Microsoft.Office.Interop.Excel.Range)mySheet.Cells[i,((Char)j).ToString()]).Formula.ToString();
temp ++;
}
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
myWorkbook.Close(false, Missing.Value, Missing.Value);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
// 释放资源
mySheet = null;
myWorkbook = null;
myExcel.Quit();
myExcel = null;
}
------解决方案--------------------
“1.xls中有vba的宏,还有什么只读的密码函数啥的”这句没明白…………
myExcel.Workbooks.Open() 的执行不成功吧?