求救一下,NPOI如何获取单元格自定义格式的内容

神码浮云 2019-07-09 05:11:25


这是客户给的数据文件,有很多,有一部份坐标设置了度分秒格式,我通过NPOI获取到值是一个整型值,这是不对的,请问一下如何才能获取到带格式的值呢?

网上找了很久,也调试试了各个方法,都没有解决,各位大侠,帮帮小弟,万分感谢!

protected void Button2_Click(object sender, EventArgs e)
{
string path = Server.MapPath("~\\Public\\test1.xls");

if (System.IO.File.Exists(path)) //判断文件是否存在
{
FileStream fs = File.OpenRead(path);
IWorkbook hssfworkbook;
try
{
hssfworkbook = new HSSFWorkbook(fs);
ISheet sheet = hssfworkbook.GetSheetAt(0);//读取第一个sheet
IEnumerator rows = sheet.GetRowEnumerator();
//得到Excel工作表的行
IRow headerRow = sheet.GetRow(0);
ICell cell = headerRow.GetCell(0);
String val = cell.ToString();
}
catch
{
}
fs.Close();
fs.Dispose();

}
}
...全文
2352 20 打赏 收藏 举报
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
神码浮云 2019-07-11
自己找到解决方法了,下面是答案,谢谢各位!
string formatString = cell.CellStyle.GetDataFormatString();
string value = cell.NumericCellValue.ToString(formatString);
参考地址: https://stackoverflow.com/questions/28714740/using-npoi-how-do-i-return-a-cell-value-as-it-has-been-formatted-by-excel
  • 打赏
  • 举报
回复
神码浮云 2019-07-11
引用 5 楼 ManBOyyy 的回复:
你這樣子試試 HSSFCellStyle cellStyle = hssfworkbook.CreateCellStyle(); HSSFDataFormat format = hssfworkbook.CreateDataFormat(); cellStyle.DataFormat = format.GetFormat("Hºmm.ss'"); cell.CellStyle=cellStyle;
protected void Button2_Click(object sender, EventArgs e)
    {
        string path = Server.MapPath("~\\Public\\test1.xls");

        if (System.IO.File.Exists(path)) //判断文件是否存在
        {
            FileStream fs = File.OpenRead(path);
            IWorkbook hssfworkbook;
            try
            {
                hssfworkbook = new HSSFWorkbook(fs);
                ISheet sheet = hssfworkbook.GetSheetAt(0);//读取第一个sheet
                IEnumerator rows = sheet.GetRowEnumerator();
                //得到Excel工作表的行 
                IRow headerRow = sheet.GetRow(0);
                ICell cell = headerRow.GetCell(0);

                HSSFCellStyle cellStyle = (HSSFCellStyle)hssfworkbook.CreateCellStyle();
                HSSFDataFormat format = (HSSFDataFormat)hssfworkbook.CreateDataFormat();
                cellStyle.DataFormat = format.GetFormat("###º##.###'"); //###"º"##"."###'  Hºmm.ss'
                cell.CellStyle = cellStyle;

                String val = cell.ToString();
            }
            catch
            {
            }
            fs.Close();
            fs.Dispose();

        }
    }
哥们,试了一下,不行哦,你有尝试过吗???
  • 打赏
  • 举报
回复
引用 19 楼 神码浮云 的回复:
[quote=引用 18 楼 爱生活爱敏敏 的回复:] 上面不是还有个导入的方法吗
没看出来,是怎么获取格式化的坐标,直接把答案说出来不行吗?谢谢![/quote] 对不起,我的帖子帮不了你。
  • 打赏
  • 举报
回复
神码浮云 2019-07-11
引用 18 楼 爱生活爱敏敏 的回复:
上面不是还有个导入的方法吗
没看出来,是怎么获取格式化的坐标,直接把答案说出来不行吗?谢谢!
  • 打赏
  • 举报
回复
上面不是还有个导入的方法吗
  • 打赏
  • 举报
回复
神码浮云 2019-07-11
引用 16 楼 爱生活爱敏敏 的回复:
https://blog.csdn.net/qq_42025804/article/details/95385624我的研究成果就在这了
没看出来哪里获取的? //单元格坐标 Point start = new Point(3, 0); Point end = new Point(5, 1) 这个吗?Point是什么?把获取的方法说一下吧,谢谢!
  • 打赏
  • 举报
回复
Hello World, 2019-07-10
既然已经知道数字怎样格式化显示的,只需要将其相同的转化即可。最简单的可以将数字转成字符,截取指定位置的内容出来再转数字就好了
  • 打赏
  • 举报
回复
https://blog.csdn.net/qq_42025804/article/details/95385624我的研究成果就在这了
  • 打赏
  • 举报
回复
引用 14 楼 神码浮云 的回复:
[quote=引用 13 楼 爱生活爱敏敏 的回复:] 还在加班吗老哥。。。
是的,你不是说有方法吗?[/quote] 我发个帖
  • 打赏
  • 举报
回复
神码浮云 2019-07-10
引用 13 楼 爱生活爱敏敏 的回复:
还在加班吗老哥。。。
是的,你不是说有方法吗?
  • 打赏
  • 举报
回复
ManBOyyy 2019-07-10
你這樣子試試
HSSFCellStyle cellStyle = hssfworkbook.CreateCellStyle();
HSSFDataFormat format = hssfworkbook.CreateDataFormat();
cellStyle.DataFormat = format.GetFormat("Hºmm.ss'");
cell.CellStyle=cellStyle;
  • 打赏
  • 举报
回复
神码浮云 2019-07-10
没有人遇到过这样的问题吗???
  • 打赏
  • 举报
回复
还在加班吗老哥。。。
  • 打赏
  • 举报
回复
神码浮云 2019-07-10
引用 11 楼 爱生活爱敏敏 的回复:
现在解决了吗,没解决可以发我有个法子。
没有哦,请说!
  • 打赏
  • 举报
回复
神码浮云 2019-07-10
这么冷淡嘛!
  • 打赏
  • 举报
回复
神码浮云 2019-07-10
等待大侠们来打救!!!
  • 打赏
  • 举报
回复
神码浮云 2019-07-10
引用 7 楼 Hello World, 的回复:
既然已经知道数字怎样格式化显示的,只需要将其相同的转化即可。最简单的可以将数字转成字符,截取指定位置的内容出来再转数字就好了
返回来的是正数,没有小数位的啊,怎么转换呢,不行吧!
  • 打赏
  • 举报
回复
神码浮云 2019-07-09
程序好多地方已经用了NPOI,要改成Aspose有点麻烦哦!
  • 打赏
  • 举报
回复
qq_34137387 2019-07-09
我之前遇到过这个问题,你使用 Aspose 这个插件试试
  • 打赏
  • 举报
回复
神码浮云 2019-07-09
我想获取度分秒的值,如:111º22.233',哪个整型无法转换经纬度。
  • 打赏
  • 举报
回复
发帖
.NET社区

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
加入社区
帖子事件
创建了帖子
2019-07-09 05:11
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。