c#读Excel的问题?

「已注销」 2012-03-29 07:49:02
public static DataTable ExcelToDataTable(string strExcelFileName, string strSheetName)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
// get Excel DataSet
}

我采用这种方法,连接了Excel,并可以获得Excel中Cell的值。
但是用这种方法链接Excel,怎么读excel中文本框(Textbox)的值?
求指导!!!!!!
有源码更好!


对好心人致礼!
...全文
43 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-03-29
  • 打赏
  • 举报
回复
问题解决了,感谢大家的帮助,尤其谢谢2楼。

我把代码贴出来,供大家参考:
private string GetTextBoxContentFromExcel()
{
//OleDbConnection excelConn = this.GetExcelConnection();//Excel驱动连接
//excelConn.Open();

Excel.ApplicationClass excelApplication = null;
Excel.Workbook excelWorkbook = null;
Excel.Worksheet excelWorkSheet = null;
excelApplication = new Excel.ApplicationClass();

string str = @"C:\Users\liuhao\Desktop\警戒数据-历史典型风暴潮实例-20120305.xlsx";

excelWorkbook = excelApplication.Workbooks.Open(str,
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);

string strSheet = "Sheet1";
excelWorkSheet =(Excel.Worksheet)excelWorkbook.Worksheets.get_Item(strSheet);
string strTextBoxName = "TextBox 1";
Excel.Shape oShapeName = excelWorkSheet.Shapes.Item(strTextBoxName);
Type t = oShapeName.OLEFormat.Object.GetType();
string strText = t.InvokeMember("Text", BindingFlags.GetProperty, null, oShapeName.OLEFormat.Object, null).ToString();
return strText;
}


要添加命名空间:using System.Reflection;
「已注销」 2012-03-29
  • 打赏
  • 举报
回复
首先感谢 5楼, 但是仍然有疑问,用您的方法可以获取每个cell,能将其中的Textbox中的文本当作一个string读取出来吗
dupeng20120327 2012-03-29
  • 打赏
  • 举报
回复
/// <summary>读取excel
/// 默认第一行为标头
/// </summary>
/// <param name="strFileName">excel文档路径</param>
/// <returns></returns>
public static DataTable Import(string strFileName)
{
DataTable dt = new DataTable();

HSSFWorkbook hssfworkbook;
using (FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new HSSFWorkbook(file);
}
NPOI.SS.UserModel.Sheet sheet = hssfworkbook.GetSheetAt(0);
//HSSFSheet sheet = hssfworkbook.GetSheetAt(0);
System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

//HSSFRow headerRow = sheet.GetRow(0);
//NPOI.SS.UserModel.Row headerRow = sheet.GetRow(0);
//int cellCount = headerRow.LastCellNum;


NPOI.SS.UserModel.Row headerrow = sheet.GetRow(sheet.FirstRowNum + 2);
int cellCount = headerrow.LastCellNum;
for (int j = 0; j < cellCount; j++)
{
//HSSFCell cell = headerRow.GetCell(j);
NPOI.SS.UserModel.Cell cell = headerrow.GetCell(j);
dt.Columns.Add(cell.ToString());
}

for (int i = (sheet.FirstRowNum + 3); i <= sheet.LastRowNum; i++)
{
//HSSFRow row = sheet.GetRow(i);
NPOI.SS.UserModel.Row row = sheet.GetRow(i);
DataRow dataRow = dt.NewRow();

for (int j = row.FirstCellNum; j < cellCount; j++)
{
if (row.GetCell(j) != null)
dataRow[j] = row.GetCell(j).ToString().Replace("_","");
}

dt.Rows.Add(dataRow);
}
return dt;
}
孟子E章 2012-03-29
  • 打赏
  • 举报
回复
可类似参考
http://www.tech-archive.net/Archive/Office/microsoft.public.office.developer.automation/2006-10/msg00007.html

http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/cb179a3f-cfd4-4762-9c52-60d248024436/
「已注销」 2012-03-29
  • 打赏
  • 举报
回复
请问怎样能够读取到Excel中Textbox 有源码更好!
孟子E章 2012-03-29
  • 打赏
  • 举报
回复
这种方法应该是不能读取到Textbox等嵌套的对象的,
你可以试一试Excel.Application方法
「已注销」 2012-03-29
  • 打赏
  • 举报
回复
public DataSet GetExcelDataSet()
{
List<string> sheetNames = new List<string>();//存放Excel表工作表名
DataSet excelDataSet = new DataSet();//存放结果集
OleDbConnection excelConn = this.GetExcelConnection();//Excel驱动连接

excelConn.Open();

DataTable excelWorkSheet = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//获取Excel表工作表名
foreach (DataRow dataRow in excelWorkSheet.Rows)//将获取的Excel表的工作表名放入数组
{
sheetNames.Add((String)dataRow["TABLE_NAME"]);
}
foreach (string sheetName in sheetNames)
{
string strCom = " select * from [" + sheetName + "]";//其第一个工作表名连接

OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, excelConn);
myCommand.Fill(excelDataSet, "[" + sheetName + "]");
}
return excelDataSet;//返回DataSet集
}


这是我读Excel的代码,但取不到其中的Textbox!

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧